開發(fā)中處理處理價(jià)格金額問題, 后臺(tái)經(jīng)常返回float崖技、double類型, 打印或轉(zhuǎn)成NSString都會(huì)有精度丟失問題 因此使用系統(tǒng)自帶的NSDecimalNumber做處理, 能解決這問題.
錯(cuò)誤:
{"price":6.3}
NSLog("%@", price);
price = 6.299999999999
解決方式:
在分類中添加以下代碼,將有精度問題的傳進(jìn)去,返回值即解決過的問題
+ (NSString *)reviseString:(NSString *)str{
//直接傳入精度丟失有問題的Double類型
double conversionValue = (double)[str doubleValue];
NSString *doubleString = [NSString stringWithFormat:@"%lf", conversionValue];
NSDecimalNumber *decNumber = [NSDecimalNumber decimalNumberWithString:doubleString];
return [decNumber stringValue];
}