gpt4 book ai didi

java - 在 Java 中,为什么小数分隔符遵循 Locale 的语言,而不是它的国家,更重要的是,如何覆盖它?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:33:02 25 4
gpt4 key购买 nike

我正在从事一个国际项目,并观察到在 Java 中,小数点分隔符的选择是基于区域设置的语言,而不是它的国家/地区。例如:

DecimalFormat currencyFormatter = (DecimalFormat) NumberFormat.getInstance(new Locale("it","IT"));
System.out.println(currencyFormatter.format(-123456.78));

currencyFormatter = (DecimalFormat) NumberFormat.getInstance(new Locale("en","IT"));
System.out.println(currencyFormatter.format(-123456.78));

产生以下输出:

-123.456,78
-123,456.78

我原以为它会跟随国家/地区,因为如果我在该国家/地区,无论我说英语还是意大利语,该国家/地区的数字都以小数点分隔符作为逗号书写。

我的问题有两个方面:

  1. 有谁知道为什么这种行为遵循语言?
  2. 更重要的是,任何人都可以提供有关如何修改 Java 中的默认行为以改为遵循该语言的详细信息吗?

谢谢。

最佳答案

很有可能您的系统上没有已知的“en_IT”语言环境,而且 Java 也不知道这样的语言环境。

因此,根据 JavaDoc of Locale 中的注释,您将获得最匹配的区域设置的资源。 :

When you ask for a resource for a particular locale, you get back the best available match, not necessarily precisely what you asked for. For more information, look at ResourceBundle.

relevant documentation in ResourceBundle表明从未尝试仅将国家/地区作为标识符来查找给定资源。仅使用语言、语言 + 国家和语言 + 国家 + 变体。

关于java - 在 Java 中,为什么小数分隔符遵循 Locale 的语言,而不是它的国家,更重要的是,如何覆盖它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2282356/

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