Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/107.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 仅在必要时才删除双精度的尾随零_Ios_Iphone_Objective C - Fatal编程技术网

Ios 仅在必要时才删除双精度的尾随零

Ios 仅在必要时才删除双精度的尾随零,ios,iphone,objective-c,Ios,Iphone,Objective C,我正在制作一个计算器应用程序,我正在使用双精度。我不想显示额外的零和小数,所以我将占位符标记更改为“%.f”。因为如果我在计算器上做了一个涉及小数的问题,它们就不会出现 我的问题基本上是,是否有任何方法可以让%.f仅在必要时使用。如果没有办法的话,你建议怎么做,这样我就只有实际需要的小数了。谢谢 >计算器考虑使用 NSCDimalalNo.结合 NSNumberFormatter < /代码>。使用浮点会有很多问题。考虑:(2/3,00000000,1)* 3.000000001,计算结果不一定

我正在制作一个计算器应用程序,我正在使用双精度。我不想显示额外的零和小数,所以我将占位符标记更改为“%.f”。因为如果我在计算器上做了一个涉及小数的问题,它们就不会出现


我的问题基本上是,是否有任何方法可以让%.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是一个糟糕的例子,我在答案中改变了这一点。