NSNumberFormatter读取字符串时的舍入行为?

时间:2012-04-20 22:06:20

标签: cocoa-touch cocoa

我有这个示例代码:

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
NSString *numberString = @"9.2";
NSNumber *number = [formatter numberFromString:numberString];
NSLog(@"String: %@, Number: %@", numberString, number);

打印结果为:

String: 9.2, Number: 9.199999999999999

我不明白为什么会这样。我错过了一个设置吗?

1 个答案:

答案 0 :(得分:2)

根据this referenceNSNumber可以存储任何普通的C数字类型。由于这是通过解析非整数获得的,因此可以选择的两种类型是floatdouble,并且根据显示的值,所选的表示形式为double

由于像9.2这样的小数部分并不能完全表示为double s,因此您可以获得最接近的可表示数字。它显示为默认精度,大约是16位小数。