当我尝试使用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);
答案 0 :(得分:2)
您指定使用有效数字,但没有说明要使用多少数字。例如,如果添加以下内容,则会得到您期望的结果:
[numberFormatter setMaximumSignificantDigits:9];
因此,如果您要使用有效数字,请指定您要使用的数量。或者根本不使用有效数字。
答案 1 :(得分:2)
您启用了usesSignificantDigits
。 maximumSignificantDigits
的默认值为6.这意味着每个超过6位有效数字的数字将被舍入为少于6位有效数字。
999 999 999
有9位有效数字。因此它将四舍五入为1 000 000 000
您可能根本不想设置usesSignificantDigits
。
Here很好地解释了有效数字对NSNumberFormatter的作用。