NSNumberFormatter stringFromNumber为输入999999999返回1,000,000,000

时间:2015-04-09 12:26:01

标签: ios objective-c

当我尝试使用NSNumberFormatter将数字999999999转换为字符串时,我得到了错误的值。它返回1,000,000,000而不是999,999,999。

这是我使用的代码。

 NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setUsesSignificantDigits:YES];
[numberFormatter setNumberStyle: NSNumberFormatterCurrencyStyle];
[numberFormatter setLocale:[NSLocale systemLocale]];
[numberFormatter setCurrencySymbol:@""];

numberAsString = [numberFormatter stringFromNumber:[NSDecimalNumber decimalNumberWithString:@"999999999" ]];
NSLog(@"Currency String %@",numberAsString);

2 个答案:

答案 0 :(得分:2)

您指定使用有效数字,但没有说明要使用多少数字。例如,如果添加以下内容,则会得到您期望的结果:

[numberFormatter setMaximumSignificantDigits:9];

因此,如果您要使用有效数字,请指定您要使用的数量。或者根本不使用有效数字。

答案 1 :(得分:2)

您启用了usesSignificantDigitsmaximumSignificantDigits的默认值为6.这意味着每个超过6位有效数字的数字将被舍入为少于6位有效数字。

999 999 999有9位有效数字。因此它将四舍五入为1 000 000 000

您可能根本不想设置usesSignificantDigits

Here很好地解释了有效数字对NSNumberFormatter的作用。