我似乎得到了某些数字的双精度值的更精确的版本。
例如69.55554,当赋值给双变量时,保存为69.555539999999993
我甚至尝试使用NSNumber和NSDecimalNumber来代替,但无济于事。我用的是swift,还没有用objective-c测试过。
关于为什么会发生这种情况以及如何修复它(或围绕它工作)的任何想法?谢谢!
使用NSDecimalNumber的代码示例
var doubleNumber : Double = 69.55554
var decimalNumber = NSDecimalNumber(double: doubleNumber)
var label = UILabel(frame: CGRectMake(10, 20, 200, 40))
label.text = "(decimalNumber.doubleValue)"
self.view.addSubview(label)
正确。这是由于浮点值的机器精度造成的。
值不精确,但尽可能接近。
0x4051638DF7A4E7AB = 69.555539999999993483470461797 <69.55554 & lt;