在Swift中将JSON数据转换为Double

时间:2017-01-23 14:01:21

标签: json swift double

我收到以下JSON响应:

{
  "id": 1,
  "value": 519.6365
}

但是当我将value转换为Double时,我得到:519.63649999999996

如何保持原值? (没有四舍五入)

2 个答案:

答案 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