這幾天看到個(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é)果可能不全萌衬,歡迎大家指正