iOS|iOS 处理服务器返回的浮点数数据
iOS开发遇到的一个问题:
对服务器返回的价格数据,直接转为字符串保存展示,服务器转过来的价格 如9.89,保存为字符串之后 变为了9.890000000000001。
处理过程为:
服务器返回的json 数据 为 responseString = {“code”:200000,”msg”:”ok”,”data”:[{“id”:34,”name”:”补胎”,”serviceParts”:[],”timeFeePrice”:9.89,”timeFeeOriginalPrice”:50.0}]}
我们看到json 数据里面 浮点数据 timeFeePrice = 9.89
responseObject = [NSJSONSerialization JSONObjectWithData:data options:self.readingOptions error:&serializationError];
经过系统json 转化为 NSDictionary* responseObject 后,打印responseObject 为
code = 200000;
data =https://www.it610.com/article/(
{
id = 34;
name ="\U8865\U80ce";
serviceParts =(
);
timeFeeOriginalPrice = 50;
timeFeePrice = "9.890000000000001";
}
);
msg = ok;
我们看到打印出来的 timeFeePrice = “9.890000000000001”;
因为 十进制数字“9.89”不能完全代表一个二进制浮点数等float或double。所以“舍入浮9.89”没有意义,因为没有完全等于9.89浮动。
你只能指定一个精度将浮点数转换为十进制输出字符串。您可以使用一个NSNumberFormatter或printf-format像”%.f
所以处理服务器返回的浮点数数据时,需要设置小数点位数。
【iOS|iOS 处理服务器返回的浮点数数据】价格数据处理,建议服务器统一使用分作为单位,传整形价格数据过来,客户端统一%100转元处理。
推荐阅读
- 2020-04-07vue中Axios的封装和API接口的管理
- Java|Java OpenCV图像处理之SIFT角点检测详解
- 事件处理程序
- iOS中的Block
- 探索免费开源服务器tomcat的魅力
- 记录iOS生成分享图片的一些问题,根据UIView生成固定尺寸的分享图片
- 爬虫数据处理HTML转义字符
- 2019-08-29|2019-08-29 iOS13适配那点事
- Hacking|Hacking with iOS: SwiftUI Edition - SnowSeeker 项目(一)
- iOS面试题--基础