我正在使用NSJSONSerialization将json字符串转换为NSDictionaray
JSON字符串是
{"bid":88.667,"ask":88.704}
NSJSONSerialization之后的
{
ask = "88.70399999999999";
bid = "88.667";
}
有人知道这个问题吗?
答案 0 :(得分:4)
看起来NSJSONSerialization
会将您的值序列化为双精度数,尽管双精度不足以精确表示某些值。在此处查看更多详细信息:Does NSJSONSerialization deserialize numbers as NSDecimalNumber?
如果精确度不是非常重要,您可以简单地舍入您的值,但由于您正在处理看似是财务应用程序的内容,因此最好将您的值乘以1000乘以整数,将这些值序列化,然后转换回来:
{"bid":88667,"ask":88704}
另一种方法是使用字符串。
答案 1 :(得分:1)
使用以下代码获取您的确切价值。
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
[formatter setMaximumFractionDigits:2];
[formatter setRoundingMode: NSNumberFormatterRoundUp];
NSString *strNumber = [formatter stringFromNumber:[NSNumber numberWithFloat:88.70399999999999]];
NSString *strNumber = [formatter stringFromNumber:[NSNumber numberWithFloat:88.667]];
输出为88.7& 输出将是88.67