我收到以下JSON响应:
{
"id": 1,
"value": 519.6365
}
但是当我将value
转换为Double
时,我得到:519.63649999999996
如何保持原值? (没有四舍五入)
答案 0 :(得分:1)
在这种情况下使用Foundation的NSNumber将是更好的解决方案。 将json值转换为 NSNumber ,它始终可以向下转换到 Double Value
在Swift 4中 -
let json = [
"id": 1,
"value": 519.6365
]
let value = (json["value"]! as NSNumber).doubleValue
print(value) // Outputs - 519.6365
如果服务器将值作为字符串发送,则需要首先将其作为String转换为double值,然后将其作为 -
value = (json["value"]! as NSString).doubleValue
答案 1 :(得分:-1)
Double就像长浮动,
Double表示64位浮点数。
Float代表一个32位浮点数。
因此,当您转换为Double时,会向变量添加32位,从而导致您看到的更改。
要保持数字不变,您需要将变量转换为Float,这意味着较小的浮点数。
var value:Float = 519.6365
var valueDouble = Double(value) // 519.636474609375
Float(valueDouble) // 519.6365