如何使用 NumberFormat
为给定的 Locale
(默认语言环境足够)和给定的小数位数格式化 double
值?
例如,我有以下值:
double d1 = 123456.78;
double d2 = 567890;
我想以下列方式打印它们,例如使用美国语言环境和2个小数位:
123,456.78
567,890.00
在这种情况下,我实际上并不关心舍入模式,因为这些双值是从具有给定比例的 BigDecimal
获得的,因此它们的小数位数总是小于或等于我想要打印的小数位数 .
Edit:
为了使事情更清楚,问题是我想以依赖于语言环境的方式显示钱,但是具有固定数量的小数位 . 上面的示例显示了如果系统区域设置为 en_US
,应如何格式化值 . 现在假设,系统区域设置是 cs_CZ
(捷克语),因此应以这种方式格式化相同的数字:
123 456,78
567 890,00
现在,如何设置NumberFormat以始终显示2个小数位,但是根据当前区域设置显示千位分隔符和小数点?
4 回答
如果您想阅读NumberFormat的文档,解决方案将是显而易见的:
在我的机器上打印出:
我相信这就是你在寻找的东西,你不要这样做 - 例如,有一些区域设置将数字组合为两个,而不是三组(这就是我们讨论的原因 grouping separator 而不是 thousands separator ) .
改编自Customizing Formats,
此功能应该为您提供所需的格式 .
你可以用类似的东西
将double值转换为double值后面的任意位数 . 我在Utility类中创建了这个方法,以便在整个项目中访问它 .