繁体   English   中英

NSNumberFormatter错误?

[英]NSNumberFormatter bug?

当我尝试通过NSNumberFormatter将NSString @"8.8"转换为NSNumber时

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
[formatter setMaximumFractionDigits:2];
[formatter setPositiveFormat:@"###0.##"];

NSNumber *result = [formatter numberFromString:@"8.8"];
NSLog(@"%@", [result stringValue]);
[formatter release];

结果是8.800000000000001

对于任何其他值(即: 6.67.79.91.24.7等等),记录的结果是完全一样的NSString传递给numberFromString方法。

我正在使用XCode 4.1和4.3模拟器。 如果我放置(或不放置) setMaximumFractionDigits或/和setPositiveFormat没有区别,则结果始终为8.800000000000001 怎么了?

非整数的大多数数字无法在浮点变量中准确表示。 有一个NSDecimalNumber类,它会以开销为代价处理精确值,该类主要用于货币计算。

请参阅: WIkipedia
浮点数是有理数,因为它们可以表示为一个整数除以另一个整数。 但是,基数确定了可以表示的分数。 例如,不能使用二进制基数将1/5精确地表示为浮点数,而可以使用十进制基数精确地表示1/5。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM