NSString上出现漂浮不精确

时间:2014-06-12 20:51:22

标签: ios types nsstring

我目前有一个非常奇怪的问题。我遇到了浮动不精确问题"将数字定义为NSString时。这是我的JSON文件的摘录,我正在从我的iOS应用程序中读取:

{"id":"804760","addtime":"1398886836","symbol":"UG","exchange":"NAS(USA)","shares":"71.00","cost":"0","in_price":"32.64","price":28.78,"rchange":-0.72,"rchange_p":-2.44,"a_open":"28.72","volume":"8K","a_low":"28.54","a_high":"29.44","pettm":"23.40","ps":"8.60","pb":"8.40","gain_p":"-11.83%","gain":-274.06,"comments":""}

我把它读成NSMutableArray,然后我想显示各条信息。我用来做这个的代码如下:

label.text = [NSString stringWithFormat:@"%@",(NSString *)json[indexPath.section][@"detail"][indexPath.row][@"price"]];

然而,我得到了浮点精度误差,其中有大量原始JSON输出中没有的额外小数位。这让我感到困惑,因为我将数据类型指定为NSString,所以即使字符串由所有数字和小数点组成,也不应该这样对待吗?

我没有正确理解,为什么会发生这种情况?顺便说一句,如果我在创建JSON输出时添加引号(例如"a_high":"\"29.44\""),也会解决错误。我宁愿不这样做。

1 个答案:

答案 0 :(得分:0)

,"in_price":"32.64","price":28.78,"rchange":-0.72, - 您注意到“价格”与“in_price”的不同之处吗? “in_price”有一个字符串值,“price”有一个数值,“rchange”也是如此。数字将转换为NSNumber,而不是NSString。