jd.png
**開發(fā)中處理數(shù)字另萤、價格金額等問題時, 后臺經常返回float類型, 打印或轉成NSString都會有精度丟失問題, 因此會用到系統(tǒng)自帶的NSDecimalNumber做處理封孙。 **
經過測試其實系統(tǒng)NSDecimalNumber是對有問題值做了四舍五入。
下面是后臺請求拿到的數(shù)據(jù):
{
"cal_date" = "2016-08-04";
fee = 0;
"fund_code" = 020007;
"min_subscript" = 100;
nav = "2.654";
"purchase_status" = 1;
"rate_growth" = "0.7665999999999999"; //此處數(shù)據(jù)有問題励负,后臺給的是0.7666
"redemp_status" = 1;
risklevel = 0;
},
處理方法 :
float testDouble = [listModel.rate_growth floatValue];
NSString *doubleString = [NSString stringWithFormat:@"%lf", testDouble];
NSDecimalNumber *decNumber = [NSDecimalNumber decimalNumberWithString:doubleString];
NSLog(@"%@", [decNumber stringValue]);
打印結果:0.7666
數(shù)據(jù)顯示先后對比:
處理前.png
處理后.png