有点相关这个问题 https://stackoverflow.com/questions/4738853/java-decimal-format-parse-to-return-double-value-with-specified-number-of-deci/4746352#4746352以及其他几个与格式化小数有关的问题(所有这些问题在这种情况下都没有帮助我)。
我正在尝试将 Long 格式化为字符串,例如123456 -> 012.345,6 (句点后跟逗号尽管看起来很奇怪,但这是项目要求)。
我正在尝试使用 DecimalFormat 进行格式化:
私有静态最终 DecimalFormat 格式 = new DecimalFormat("##0.000,0");
但是它在实例化期间抛出异常:
java.lang.IllegalArgumentException:格式错误的模式“##0.000,0”
我还尝试过事先将语言环境更改为欧盟系统,例如
NumberFormat numberFormat = NumberFormat.getNumberInstance(Locale.GERMAN);
如何以这种方式格式化数字? DecimalFormat 是错误的解决方案吗?我可以使用 NumberFormat 吗?或者我需要自定义格式化程序吗?
你应该避免构建DecimalFormat
直接地。逗号是always用于在模式定义中进行分组,无论它们在目标区域设置中的显示方式如何。同样,句点始终用于小数。这看起来不合逻辑,但必须记住这是一种pattern定义,并且像 # 一样,这些字符描述替换,而不是字符本身。
NumberFormat f = NumberFormat.getInstance(Locale.GERMANY);
if (f instanceof DecimalFormat) {
((DecimalFormat) f).applyPattern("##0,000.0");
}
f.format(123456 / 10.0);
要获得小数点后的数字,必须除以 10。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)