字符串转数字会出现的偏差

这几天看到个问题,当使用 floatValue 转化字符串保留两位小数的时候,小数位数或者个位上面数字会出现偏差。

如下:

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

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

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

打印台如下:

Demo[8834:171241] str:88888380.83

Demo[8834:171241] strFFFFF:88888384.00

当使用双精度doubleValue 转化的时候,情况如下:

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

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

打印台如下:

Demo[8834:171241] strDDDDD:88888380.83

Demo[8834:171241] strDDDDD:88888380.830000

经过试验发现:当floatValue 转化保留两位小数的时候,小数点前面至多有5位,当小数点前面有6位的时候,转化就会出现偏差

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

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

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

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

打印台如下:

Demo[9180:178132] strTwoFFFFF:88380.83

Demo[9180:178132] strThreeFFFFF:888380.81


这就是我试验的结果,试验结果可能不全,欢迎大家指正

你可能感兴趣的:(字符串转数字会出现的偏差)