Double是舍入我的最后一个NSNumber小数

时间:2016-08-11 18:25:37

标签: ios swift nsdate nsnumber

例如

                    print(message.timestamp!)

给了我:1470938337.572778

                    print(Double(message.timestamp!))

给了我:1470938337.57278

我需要使用double来转换为NSDate,如下所示:

date: NSDate(timeIntervalSince1970: Double(message.timestamp!))

但我还需要时间戳准确,为什么要四舍五入?

1 个答案:

答案 0 :(得分:1)

看看这个示例代码:

import Foundation

let input: NSNumber = 1470938337.572778

print("   NSNumber: \(input)")
print("     Double: \(Double(input))")
print("doubleValue: \(input.doubleValue)")

<强>输出:

   NSNumber: 1,470,938,337.57278 //not even this is printing correctly.
     Double: 1470938337.57278
doubleValue: 1470938337.57278

这是超出IEEE 754双宽度浮点数据类型可表示的精度的情况。问题不在NSNumber - &gt; Double转换(这是有道理的,因为NSNumber是Double的包装器。)