我正在尝试格式化大型货币数字:
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
坚持四舍五入?
答案 0 :(得分:5)
NSNumberFormatter
在显示之前将数字转换为double,因此这不是您想要的。 NSDecimalNumber
有descriptionWithLocale:
方法,可以满足您的需求。
请参阅此答案:link