Double 正在四舍五入我最后的 NSNumber 小数
Double is rounding my last NSNumber decimal
例如
print(message.timestamp!)
给我:1470938337.572778
print(Double(message.timestamp!))
给我:1470938337.57278
我需要像这样使用 double 转换为 NSDate:
date: NSDate(timeIntervalSince1970: Double(message.timestamp!))
但我还需要准确的时间戳,为什么要四舍五入?
看看这个示例代码:
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
-> Double
转换中(这是有道理的,因为 NSNumber
是 Double 的包装器)。
例如
print(message.timestamp!)
给我:1470938337.572778
print(Double(message.timestamp!))
给我:1470938337.57278
我需要像这样使用 double 转换为 NSDate:
date: NSDate(timeIntervalSince1970: Double(message.timestamp!))
但我还需要准确的时间戳,为什么要四舍五入?
看看这个示例代码:
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
-> Double
转换中(这是有道理的,因为 NSNumber
是 Double 的包装器)。