如何防止iPhone NSNumberFormatter四舍五入?

时间:2009-03-31 23:05:16

标签: iphone objective-c cocoa-touch

我正在尝试格式化大型货币数字:

NSNumber *testVal = [NSDecimalNumber decimalNumberWithString: @"999999999999999993.00"];
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterCurrencyStyle];
[formatter setMaximumIntegerDigits:19];
[formatter setMaximumFractionDigits:0];
NSNumberFormatter *formatter = [Formatters numberFormatterForField:f];
NSLog([formatter stringFromNumber:testVal]);

暂时忽略Locale的影响,我发现无论舍入如何,我都会始终获得以下输出:

1,000,000,000,000,000,000

我期待:

999,999,999,999,999,993

我尝试过更改舍入而没有效果。为什么NSNumberFormatter坚持四舍五入?

1 个答案:

答案 0 :(得分:5)

NSNumberFormatter在显示之前将数字转换为double,因此这不是您想要的。 NSDecimalNumberdescriptionWithLocale:方法,可以满足您的需求。

请参阅此答案:link