我們做網(wǎng)絡(luò)獲取的時(shí)候,一般后臺會(huì)返回給我們json格式的文件,我們獲取到的信息也是字符串,但是返回的字符串分明是1.459999999,而在谷歌瀏覽器測試的時(shí)候返回的卻是1.46,這個(gè)問題百思不得其解,經(jīng)過查閱資料發(fā)現(xiàn)這個(gè)精度丟失的問題,在后臺返回float或者double或者NSString類型時(shí),利用NSDecimalNumber處理精度丟失問題,但是NSNumber的description方法不夠嚴(yán)謹(jǐn),在調(diào)用NSNumber的description方法打印數(shù)值時(shí),會(huì)發(fā)生精度損失。如果是double類型,建議把NSNumber轉(zhuǎn)換成double再進(jìn)行輸出或計(jì)算。
+(NSString *)reviseString: (NSString *)str
{
//直接傳入精度丟失有問題的Double類型
double conversionValue = [str doubleValue];
NSString *doubleString = [NSString stringWithFormat:@"%lf", conversionValue];
NSDecimalNumber *decNumber = [NSDecimalNumber decimalNumberWithString:doubleString];
return [decNumber stringValue];
}