为什么NSString的doubleValue与原始字符串不同?

时间:2016-07-19 09:07:37

标签: ios nsstring double

NSString是@"16.240" 它的doubleValue是16.239999999999998

幕后发生了什么?

2 个答案:

答案 0 :(得分:0)

由于浮点舍入错误

长故事短;并非每个数字都可以使用浮点类型表示。

参考文献:#1#2#3

答案 1 :(得分:0)

如果它是价格(或一般金钱)的价值,最好使用NSDecimalNumber,因为它会按原样保存浮动值的每个部分。

NSDecimalNumber *price = [NSDecimalNumber decimalNumberWithString:@"16.240"];
NSLog(price); //16.24

http://rypress.com/tutorials/objective-c/data-types/nsdecimalnumber