我注意到在C#中乘以十进制值时出现了一个奇怪的行为。 考虑下面的乘法运算: 1.1111111111111111111111111111m * 1m = 1.1111111111111111111111111111 // OK 1.1111111111111111111111111111m * 2m = 2.2222222222222222222222222222 // OK 1.1111111111111111111111111111m * 3m = 3.3333333333333333333333333333 // OK 1.1111111111111111111111111111m * 4m = 4.4444444444444444444444444444 // OK 1.1111111111111111111111111111m * 5m = 5.5555555555555555555555555555 // OK 1.1111111111111111111111111111m * 6m = 6.6666666666666666666666666666 // OK 1.1111111111111111111111111111m * 7m = 7.7777777777777777777777777777 // OK 1.1111111111111111111111111111m * 8m = […]
可能是一个简单的问题,但我尝试所有的转换方法! 它仍然有错误! 你能帮我吗? 十进制? (可为空的十进制)为十进制
我读了这个和那个 。 我完全需要这个: 1.4324 =>“1.43” 9.4000 =>“9.4” 43.000 =>“43” 9.4 =>“9.40”(错误) 43.000 =>“43.00”(错误) 在这两个问题的答案指向NSNumberFormatter 。 所以应该很容易实现,但不适合我。 – (void)viewDidLoad { [super viewDidLoad]; UILabel *myLabel = [[UILabel alloc] initWithFrame:CGRectMake(50, 100, 200, 20)]; NSNumberFormatter *doubleValueWithMaxTwoDecimalPlaces = [[NSNumberFormatter alloc] init]; [doubleValueWithMaxTwoDecimalPlaces setNumberStyle:NSNumberFormatterDecimalStyle]; [doubleValueWithMaxTwoDecimalPlaces setPaddingPosition:NSNumberFormatterPadAfterSuffix]; [doubleValueWithMaxTwoDecimalPlaces setFormatWidth:2]; NSNumber *myValue = [NSNumber numberWithDouble:0.01234]; //NSNumber *myValue = [NSNumber numberWithDouble:0.1]; myLabel.text = [doubleValueWithMaxTwoDecimalPlaces […]
我不断得到浮点数( float , double float或long double float )是否只有一个精度值,或精度值是否可变的混合答案。 浮点与双精度的一个主题似乎意味着浮点精度是绝对的。 然而,另一个名为float和double的区别说, 一般来说,double有15到16个十进制数字的精度 另有消息称, floattypes的variables通常具有约 7位有效数字的精度 doubletypes的variables通常具有大约 16位有效数字的精度 如果我正在处理敏感的代码,那么当我的值不准确时,我不喜欢引用上述近似值。 所以让我们直接logging下来。 浮点精度是可变的还是不变的,为什么?
我想在getter中格式化该值,并返回一个格式化的货币值。 这是可能的或者我需要将该属性声明为一个string,然后使用string.format。
这对于一些人来说似乎是一个愚蠢的问题,但我需要投入一个双倍到十进制作为货币。 M去哪了? decimal dtot = (decimal)(doubleTotal);
用这种方法格式化一个python小数是一个好方法吗? 1.00 – >'1' 1.20 – >'1.2' 1.23 – >'1.23' 1.234 – >'1.23' 1.2345 – >'1.23'
问题总结: 对于一些十进制值,当我们将types从十进制转换为双精度时,一小部分被添加到结果中。 更糟的是,可以有两个“相等的”十进制值,这些值在转换时会导致不同的double值。 代码示例: decimal dcm = 8224055000.0000000000m; // dcm = 8224055000 double dbl = Convert.ToDouble(dcm); // dbl = 8224055000.000001 decimal dcm2 = Convert.ToDecimal(dbl); // dcm2 = 8224055000 double dbl2 = Convert.ToDouble(dcm2); // dbl2 = 8224055000.0 decimal deltaDcm = dcm2 – dcm; // deltaDcm = 0 double deltaDbl = dbl2 – dbl; // deltaDbl = […]
我有一个在Python中的格式:'nn.nnnnn'的string,我想将其转换为一个整数。 直接转换失败: >>> s = '23.45678' >>> i = int(s) Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: invalid literal for int() with base 10: '23.45678' 我可以将其转换为小数使用: >>> from decimal import * >>> d = Decimal(s) >>> print d 23.45678 我也可以拆分'。',然后从零中减去小数,然后将其添加到整数… yuck。 但我宁愿把它作为一个整数,没有不必要的types转换或机动。
我试图将1200.00转换为decimal ,但Decimal.Parse()删除.00 。 我已经尝试了一些不同的方法,但它总是移除.00 ,除非我提供一个不同于0的分数。 string value = "1200.00"; 方法1 var convertDecimal = Decimal.Parse(value , NumberStyles.AllowThousands | NumberStyles.AllowDecimalPoint | NumberStyles.AllowCurrencySymbol); 方法2 var convertDecimal = Convert.ToDecimal(value); 方法3 var convertDecimal = Decimal.Parse(value, NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture); 如何将包含1200.00的string转换为包含1200.00的decimal ?