双精度后十进制数后的位数

时间:2018-02-11 07:41:03

标签: objective-c

我有一个值,我想只看到小数点上的两位数。

期望输出= 5.49,但仍然返回5.49000000002

value = 5.49000000002;
double tempValue = (round(value*100))/100.0;

还尝试了以下示例,仍然保持不变。

[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
[formatter setMaximumFractionDigits:2];
[formatter setRoundingMode: NSNumberFormatterRoundFloor];
double value = 5.49000000000002;
double x = [[formatter stringFromNumber:[NSNumber numberWithDouble:value]] doubleValue];
double y = [[NSString stringWithFormat:@"%.2f", value] doubleValue];

1 个答案:

答案 0 :(得分:0)

有时双打不能显示特定值。由于以二进制表示,它有时会最终真正接近。你需要在那里舍入更少的工作,更多的是截断输出。通常情况并不重要,只需使用printf或其他东西来显示输出的相关字节数。你不能完美地用二进制命中每个十进制数。