Objective-C:NSJSONSerialization浮点数问题

dam*_*amo 9 nsjsonserialization

我正在使用NSJSONSerialization将json字符串转换为NSDictionaray

JSON字符串是

{"bid":88.667,"ask":88.704}
Run Code Online (Sandbox Code Playgroud)

在NSJSONSerialization之后

{
    ask = "88.70399999999999";
    bid = "88.667";
}
Run Code Online (Sandbox Code Playgroud)

有人知道这个问题吗?

sav*_*nto 4

NSJSONSerialization尽管双精度数不够精确,无法准确表示某些值,但它看起来会将您的值序列化为双精度数。请在此处查看更多详细信息:Does NSJSONSerialization deserializenumbers as NSDecimalNumber?

如果精度不是非常重要,您可以简单地对值进行四舍五入,但由于您正在处理看似金融应用程序,因此最好通过乘以 1000 将值转换为整数,序列化这些值,然后转换后退:

{"bid":88667,"ask":88704}
Run Code Online (Sandbox Code Playgroud)

另一种方法是使用字符串。