Swift数组字典包含一个double,保存到用户默认值添加小数位

时间:2017-05-01 18:25:37

标签: arrays swift double

我创建了一个名为testArray的数组。然后我将其保存为用户默认值。并从用户默认值中检索它。当我记录原始" testArray"并记录检索到的" retrieveArray",经度和纬度字段已经改变。

例如:

testArray:"经度":31.132013199999999

retrieveArray:"经度":31.1320132

这是为什么?还有陌生人 - 为什么检索到的数组正确记录,但原始数组是否记录了额外的小数位?

谢谢。

let testarray =
Array(
arrayLiteral:
["longitude":31.1320132],
["longitude":31.1320132],
["longitude":31.1320132],
["longitude":31.1320132])

UserDefaults.standard.set(testarray, forKey: "myTestArray")

let retrievedArray = UserDefaults.standard.value(forKey:"myTestArray")

NSLog((testarray as! Array<Dictionary<String,Any>>)[2].description)

NSLog((retrievedArray as! Array<Dictionary<String,Any>>)[2].description)

输出

app[75897:9783167] ["longitude": 31.132013199999999]

app[75897:9783167] ["longitude": 31.1320132]

更新:有人说过#34;重复问题&#34;在StackOverflow上使用过于激进,我有时会注意到。但在这种情况下,是的!这个重复的问题&#34;似乎确实谈到了这个问题。谢谢。

1 个答案:

答案 0 :(得分:1)

这是round-off error

我建议您将double转换为字符串,或者舍入值。您可以看到许多解决方案where