iOS开发笔记本

【iOS】double转String出现精度异常

2017-09-08  本文已影响105人  zhangPeng丶

简书http://www.jianshu.com/u/5690b3ad0a6f
Bloghttp://blog.zhangpeng.site
GitHubhttps://github.com/fullstack-zhangpeng

double转String出现精度异常

在日常开发中,后台再给我们返回数字类型的数据时,很有可能是带小数点的。我们只能用float或者double去接,我们如果需要显示给用户时,就会造成精度异常。

错误:

{
    "double": 79.04,
}

后台给我们返回上面的json,我们将它转为字典

NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
[NSString stringWithFormat:@"转换错误的结果为%@", dic[@"double"]];
image

也许有人会说在转字符串时,加上保留的位数就可以了。

解决办法

采用苹果提供的NSDecimalNumber解决此问题

double d = [dic[@"double"] doubleValue];
NSString *dStr = [NSString stringWithFormat:@"%f", d];
NSDecimalNumber *dn = [NSDecimalNumber decimalNumberWithString:dStr];
    
[NSString stringWithFormat:@"转换成功的结果为%@", dn.stringValue];
    
image

详见Demo的VC1 Demo

上一篇 下一篇

猜你喜欢

热点阅读