我正在尝试格式化大型货币数字,如下所示:
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
坚持四舍五入?
NSNumberFormatter
在显示之前将数字转换为双精度,所以这不是您想要的。NSDecimalNumber
有一种descriptionWithLocale:
适合您需求的方法。
看到这个答案:链接