Ios 仅在必要时才删除双精度的尾随零
我正在制作一个计算器应用程序,我正在使用双精度。我不想显示额外的零和小数,所以我将占位符标记更改为“%.f”。因为如果我在计算器上做了一个涉及小数的问题,它们就不会出现Ios 仅在必要时才删除双精度的尾随零,ios,iphone,objective-c,Ios,Iphone,Objective C,我正在制作一个计算器应用程序,我正在使用双精度。我不想显示额外的零和小数,所以我将占位符标记更改为“%.f”。因为如果我在计算器上做了一个涉及小数的问题,它们就不会出现 我的问题基本上是,是否有任何方法可以让%.f仅在必要时使用。如果没有办法的话,你建议怎么做,这样我就只有实际需要的小数了。谢谢 >计算器考虑使用 NSCDimalalNo.结合 NSNumberFormatter < /代码>。使用浮点会有很多问题。考虑:(2/3,00000000,1)* 3.000000001,计算结果不一定
我的问题基本上是,是否有任何方法可以让%.f仅在必要时使用。如果没有办法的话,你建议怎么做,这样我就只有实际需要的小数了。谢谢 >计算器考虑使用<代码> NSCDimalalNo.<代码>结合<代码> NSNumberFormatter < /代码>。使用浮点会有很多问题。考虑:(2/3,00000000,1)* 3.000000001,计算结果不一定是2。< < /P> < P>计算器考虑使用<代码> NSCDIMALNATON/<代码>结合<代码> NSNumberFormatter < /代码>。使用浮点会有很多问题。考虑:(2/3.00000000 1)*3.000000001,结果不一定正好是2。您可能希望使用
NSDecimarlNumber
,但要回答您的问题,您可以使用NSNumberFormatter
将输出格式化为双精度
double someNumber = 1.9;
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
NSLog(@"%@",[formatter stringFromNumber:[NSNumber numberWithDouble:someNumber]]);
我的输出
2014-01-13 11:30:41.429 DTMTestApp[23933:907]1.9
您可能想使用
NSDecimarlNumber
,但要回答您的问题,您可以使用NSNumberFormatter
将输出格式化为双精度
double someNumber = 1.9;
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
NSLog(@"%@",[formatter stringFromNumber:[NSNumber numberWithDouble:someNumber]]);
我的输出
2014-01-13 11:30:41.429 DTMTestApp[23933:907]1.9
您可以使用NSDecimalNumber以十进制进行计算,因此它们的行为更像铅笔和纸。和/或您可以扫描格式化的数字并“修剪”掉尾随的零(和小数点,如果合适)。(当然,您可能需要先添加一个“小增量”以避免得到123.4599998。)您可以使用NSDecimalNumber以十进制进行计算,因此它们的行为更像铅笔和纸。和/或您可以扫描格式化的数字并“修剪”掉尾随的零(和小数点,如果合适)。(当然,您可能需要先添加一个“小增量”以避免得到123.4599998。)(但即使是NSDecimalNumber也无法正确计算(2/3)*3…@Martin True。实际上,
NSDecimalNumber
与float
和double
一样。(2/3)*3是一个坏例子,我在答案中更改了。(但即使是NSDecimalNumber也无法正确计算(2/3)*3…@Martin True)。实际上,NSDecimalNumber
与float
和double
一样。(2/3)*3是一个糟糕的例子,我在答案中改变了这一点。