我使用NSJSONSerialization以JSON字符串轉換爲NSDictionaray的Objective-C:NSJSONSerialization浮點數問題
JSON字符串是
{"bid":88.667,"ask":88.704}
後NSJSONSerialization
{
ask = "88.70399999999999";
bid = "88.667";
}
任何人都知道這一點問題?
我使用NSJSONSerialization以JSON字符串轉換爲NSDictionaray的Objective-C:NSJSONSerialization浮點數問題
JSON字符串是
{"bid":88.667,"ask":88.704}
後NSJSONSerialization
{
ask = "88.70399999999999";
bid = "88.667";
}
任何人都知道這一點問題?
看起來好像NSJSONSerialization
會將您的值序列化爲雙精度值,儘管事實上雙精度不足以精確地表示某些值。在這裏看到更多的細節:Does NSJSONSerialization deserialize numbers as NSDecimalNumber?
如果精度不是非常重要,你可以簡單地舍入你的值,但因爲你正在處理似乎是一個財務應用程序,最好將你的值轉換爲整數乘以1000,序列化那些,然後轉換回:
{"bid":88667,"ask":88704}
另一種方法是使用字符串。
使用下面的代碼來得到您的確切值。
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
你找到任何答案嗎? ...我正面臨這個問題。 –
@mihirmehta不,我沒有。 – damo