字符串轉(zhuǎn)數(shù)字會(huì)出現(xiàn)的偏差

這幾天看到個(gè)問題,當(dāng)使用 floatValue 轉(zhuǎn)化字符串保留兩位小數(shù)的時(shí)候,小數(shù)位數(shù)或者個(gè)位上面數(shù)字會(huì)出現(xiàn)偏差。

如下:

NSString *str = [NSString stringWithFormat:@"88888380.83"];

NSLog(@"str:%@",str); ? ? ? ? ? ? ? ? ? ??

NSLog(@"strFFFFF:%.2f",[str floatValue]);

打印臺(tái)如下:

Demo[8834:171241] str:88888380.83

Demo[8834:171241] strFFFFF:88888384.00

當(dāng)使用雙精度doubleValue 轉(zhuǎn)化的時(shí)候,情況如下:

NSLog(@"strDDDDD:%.2f",[str doubleValue]);

NSLog(@"strDDDDD:%f",[str doubleValue]);

打印臺(tái)如下:

Demo[8834:171241] strDDDDD:88888380.83

Demo[8834:171241] strDDDDD:88888380.830000

經(jīng)過試驗(yàn)發(fā)現(xiàn):當(dāng)floatValue 轉(zhuǎn)化保留兩位小數(shù)的時(shí)候,小數(shù)點(diǎn)前面至多有5位,當(dāng)小數(shù)點(diǎn)前面有6位的時(shí)候,轉(zhuǎn)化就會(huì)出現(xiàn)偏差

NSString *strTwo = [NSString stringWithFormat:@"88380.83"];

NSLog(@"strTwoFFFFF:%.2f",[strTwo floatValue]);

NSString *strThree = [NSString stringWithFormat:@"888380.83"];

?NSLog(@"strThreeFFFFF:%.2f",[strThree floatValue]);

打印臺(tái)如下:

Demo[9180:178132] strTwoFFFFF:88380.83

Demo[9180:178132] strThreeFFFFF:888380.81


這就是我試驗(yàn)的結(jié)果,試驗(yàn)結(jié)果可能不全,歡迎大家指正

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

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

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