这几天看到个问题,当使用 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
这就是我试验的结果,试验结果可能不全,欢迎大家指正
网友评论