gpt4 book ai didi

java - 将 DecimalFormat 与自定义模式一起使用,但没有区域设置格式

转载 作者:行者123 更新时间:2023-11-30 05:27:48 25 4
gpt4 key购买 nike

我想将 DecimalFormat 与自定义模式一起使用。可以使用 applyPattern() 方法设置模式,但这对于 Numberformat 来说是不可能的,因此必须使用 DecimalFormat。但是,如果不提供区域设置,则无法使用 DecimalFormat,然后它使用区域设置将特定于区域设置的模式应用到自定义模式之上。因此,本质上输出发生了变化,并且不再满足所提供模式的细节。

这个案例之前已经提出过,但没有解决方案,我们:DecimalFormat ignores given pattern but uses Locale

有没有一种方法可以严格使用自定义模式而不需要任何自动区域设置格式化魔法?谢谢。

最佳答案

让我先检查一下我是否正确理解了您的问题。

    double number = 123456.789;
NumberFormat nf = new DecimalFormat("###,###.###");
System.out.println(nf.format(number));

此代码使用您的默认格式区域设置。例如,当我的默认区域设置设置为德语时,输出为:

123.456,789

使用了德语格式符号:点作为千位分隔符,逗号作为小数“点”。你不希望这样。

解决方案:我通常使用 Locale.ROOT 作为“区域设置中立的区域设置”,以此表示“不要在此处执行任何区域设置特定的处理” 。它在这里也有效。将格式化程序的实例化更改为:

    NumberFormat nf = new DecimalFormat("###,###.###", new DecimalFormatSymbols(Locale.ROOT));

现在的输出(仍然是德语语言环境)是:

123,456.789

或者更短且可能更好的方法来获得相同的结果:

    NumberFormat nf = NumberFormat.getInstance(Locale.ROOT);

我们不需要关心DecimalFormat,只需关心NumberFormat

关于java - 将 DecimalFormat 与自定义模式一起使用,但没有区域设置格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58200066/

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