当前位置:  开发笔记 > IOS > 正文

如何防止iPhone NSNumberFormatter舍入?

如何解决《如何防止iPhoneNSNumberFormatter舍入?》经验,为你挑选了1个好方法。

我正在尝试格式化大型货币数字,如下所示:

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> rpetrich..:

NSNumberFormatter在显示之前将数字转换为双精度,所以这不是您想要的。NSDecimalNumber有一种descriptionWithLocale:适合您需求的方法。

看到这个答案:链接

推荐阅读
拾味湖
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有