关于iOS数据解析小数丢失精度的问题AFNetworking
2017-01-10 18:36
841 查看
建议:关于金额涉及到精确分的数额时,可以和后台讨论最好以分为基本单位,这样请求的数据都是整数,在前端处理转化为元。可以避免小数精确度的问题。
下面是正常请求。
解决办法
目前发现
出现BUG的条件是两位数或者一位数,且带两位小数,类型还必须是float//两位数:十位必须是7、8、9;个位数随意,一位数的个位数也必须是789//两位小数:第一位数随意;第二位数必须是0
下面是正常请求。
NSURLSessionDataTask*task = [manager POST:httpStr parameters:secureDic progress:nilsuccess:^(NSURLSessionDataTask* _Nonnull task, id _Nullable responseObject) { //请求回来打印responseObject if(!isRedirect) { [selfsaveCookies]; requestBlock(responseObject,nil); } } failure:^(NSURLSessionDataTask* _Nullable task, NSError* _Nonnull error) { if(![DataRequest haveInternet]) { NSDictionary*mesDic = @{@"mes":DataRequestNoInternetMessage}; NSDictionary*notWorkDic = @{@"message":mesDic}; requestBlock(notWorkDic,nil); }else requestBlock(dic,nil); }];
后来查了下,发现是苹果的json解析会莫名其妙丢失精度
以下是测试结果 NSString *jsonStr = @"{\"9.70\":9.70, \"97.40\":97.40, \"80.40\":80.40, \"188.40\":188.40}"; NSLog(@"json:%@", jsonStr); NSData *jsonData_ = [jsonStr dataUsingEncoding:NSUTF8StringEncoding]; NSError *jsonParsingError_ = nil; NSDictionary *dic = [NSMutableDictionary dictionaryWithDictionary:[NSJSONSerialization JSONObjectWithData:jsonData_ options:0 error:&jsonParsingError_]]; NSLog(@"dic:%@", dic); /*结果:dic:{ "188.40" = "188.4"; "80.40" = "80.40000000000001"; "9.70" = "9.699999999999999"; "97.40" = "97.40000000000001"; }*/
解决办法
NSString *decimalNumberWithDouble(double conversionValue){ NSString *doubleString = [NSString stringWithFormat:@"%lf", conversionValue]; NSDecimalNumber *decNumber = [NSDecimalNumber decimalNumberWithString:doubleString]; return [decNumber stringValue]; }或者直接让服务器回传字符串就不会出现这个问题了。
相关文章推荐
- 关于iOS数据解析小数丢失精度的问题AFNetworking
- iOS 关于网络数据解析小数位精度丢失问题的修正
- 关于小数负数丢失精度的问题
- 关于java中long类型的数据转换json传到前台时丢失精度问题的解决办法
- iOS - Json解析数据精度丢失处理
- 详解iOS之关于double/float数据计算精度问题
- 关于IOS开发中数据版本更新需要考虑的问题
- ext grid 显示数据精度丢失问题
- iOS 中json解析数据出现中文乱码的问题
- 关于IOS数据操作方式详解(三)— Sqlite数据解析
- 关于android的activity被回收,导致的变量数据丢失的问题
- 关于ios中BLE4.0的精度问题
- Tomcat 关于表单提交数据量过大导致数据丢失的问题
- 关于JavaScript中计算精度丢失的问题(二)
- 【数据处理】关于string与byte转换之间 数据丢失的问题
- iOS 中json解析数据出现中文乱码的问题
- PHP接收IOS post过来的json数据无法解析的问题
- 关于IOS开发中数据版本更新需要考虑的问题
- 关于Java浮点数运算精度丢失问题
- iOS json解析数据中文出现乱码的问题