例如
print(message.timestamp!)
给了我:1470938337.572778
print(Double(message.timestamp!))
给了我:1470938337.57278
我需要使用double来转换为NSDate,如下所示:
date: NSDate(timeIntervalSince1970: Double(message.timestamp!))
但我还需要时间戳准确,为什么要四舍五入?
答案 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的包装器。)