AFNetworking小數(shù)點(diǎn)精度丟失問題

本問引自于:
關(guān)于iOS數(shù)據(jù)解析小數(shù)丟失精度的問題AFNetworking

目前發(fā)現(xiàn)

//出現(xiàn)BUG的條件是兩位數(shù)或者一位數(shù),且?guī)晌恍?shù),類型還必須是float//兩位數(shù):十位必須是7、8、9;個(gè)位數(shù)隨意,一位數(shù)的個(gè)位數(shù)也必須是789//兩位小數(shù):第一位數(shù)隨意;第二位數(shù)必須是

下面是正常請(qǐng)求。

 NSURLSessionDataTask*task = [manager POST:httpStr parameters:secureDic progress:nilsuccess:^(NSURLSessionDataTask* _Nonnull task, id  _Nullable responseObject) {  
        //請(qǐng)求回來打印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);  
    }];

打印結(jié)果如下,discount字段,服務(wù)器返回的是double,9.70,AFNetworking解析后就成了9.699999999999

后來查了下,發(fā)現(xiàn)是蘋果的json解析會(huì)莫名其妙丟失精度

以下是測(cè)試結(jié)果

以下是測(cè)試結(jié)果   
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);
    /*結(jié)果: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];  
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容