iOS - Json解析精度丟失處理(NSString, Double, Float)

開發(fā)中處理處理價格金額問題, 后臺經(jīng)常返回float類型, 打印或轉(zhuǎn)成NSString都會有精度丟失問題, 因此使用系統(tǒng)自帶的NSDecimalNumber做處理, 能解決這問題:

經(jīng)過測試其實系統(tǒng)NSDecimalNumber是對有問題值做了四舍五入處理

  • 還有經(jīng)過測試, 重要的事說三遍:
    處理精度有關(guān)的數(shù)據(jù)請用double
    處理精度有關(guān)的數(shù)據(jù)請用double
    處理精度有關(guān)的數(shù)據(jù)請用double
    float testDouble = [jsonDict[@"Body"][@"Amount"] floatValue]; //有問題 90.989999999999994
    NSString *convertString = decimalNumberWithString([jsonDict[@"Body"][@"Amount"] stringValue]);
    NSLog(@"%@", convertString);
       testDouble的值     原始值& NSDecimalNumber處理后打印后的值
//    99.489999999999994 99.49
//    99.989999999999994 99.99
//    90                 90.00
//    90.090000000000003 90.09
//    90.189999999999998 90.19
//    90.290000000000006 90.29
//    90.39              90.39
//    90.489999999999994 90.49
//    90.590000000000003 90.59
//    90.689999999999998 90.69
//    90.790000000000006 90.79
//    90.89              90.89
//    90.989999999999994 90.99

對此自己寫了個方法處理 :

/** 直接傳入精度丟失有問題的Double類型*/
NSString *decimalNumberWithDouble(double conversionValue){
    NSString *doubleString        = [NSString stringWithFormat:@"%lf", conversionValue];
    NSDecimalNumber *decNumber    = [NSDecimalNumber decimalNumberWithString:doubleString];
    return [decNumber stringValue];
}

強烈建議 :

   有關(guān)浮點型數(shù)據(jù),后臺傳字符串的格式,防止丟失精度。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

  • 前幾天在IOS開發(fā)時發(fā)現(xiàn)一個JSON解析奇葩問題,會出現(xiàn)一定概率的錯誤,如下: 初步懷疑是系統(tǒng)API內(nèi)部處理問題。...
    奮斗的蝸牛閱讀 2,101評論 1 3
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,506評論 19 139
  • 前言 在日常的開發(fā)中我們隨時都會跟數(shù)字打著交道,對數(shù)字的處理也是很平常的事,本文僅對常用的數(shù)字操作一個小結(jié),當(dāng)一個...
    進無盡閱讀 1,382評論 0 2
  • 建立一個平臺,挑選一些有意思的議題進行發(fā)表,建立一個圈子,給對此感興趣的人提供一個交流的平臺和渠道
    久也行閱讀 142評論 0 0
  • 這天氣真叫悶騷,室內(nèi)熱室外冷。下班時雨下得不算大,只是陰沉著天,如同剛挨罵的科長,擺著一張臭臉,仿佛單位里誰都欠他...
    木頭奶奶閱讀 735評論 8 23

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