gpt4 book ai didi

java - 带句点和逗号的自定义格式数字

转载 作者:行者123 更新时间:2023-12-02 13:24:17 25 4
gpt4 key购买 nike

this question和其他几个与格式化小数有关的SO问题有些相关(所有这些在这种情况下都没有帮助我)。

我正在尝试将 Long 格式化为字符串,例如123456 -> 012.345,6(句点后跟逗号虽然看起来很奇怪,但这是项目要求)。

我正在尝试使用 DecimalFormat 进行格式化:

private static final DecimalFormat format = new DecimalFormat("##0.000,0");

但是它在实例化期间抛出异常:

java.lang.IllegalArgumentException: Malformed pattern "##0.000,0"

我还尝试过提前将语言环境更改为欧盟系统,例如

NumberFormat numberFormat = NumberFormat.getNumberInstance(Locale.GERMAN);

如何以这种方式格式化数字? DecimalFormat 是错误的解决方案吗?我可以使用 NumberFormat 吗?或者我需要自定义格式化程序吗?

最佳答案

您应该避免直接构造DecimalFormat。逗号总是用于模式定义中的分组,无论它们在目标语言环境中如何出现。同样,句点始终用于小数。这看起来不合逻辑,但必须记住这是一个模式定义,并且像 # 一样,这些字符描述替换,而不是字符本身。

NumberFormat f = NumberFormat.getInstance(Locale.GERMANY);
if (f instanceof DecimalFormat) {
((DecimalFormat) f).applyPattern("##0,000.0");
}
f.format(123456 / 10.0);

要获得小数点后的数字,必须除以 10。

关于java - 带句点和逗号的自定义格式数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12711493/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com