小编Mar*_*nes的帖子

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

我正在开展一个国际项目,并且观察到,在Java中,小数分隔符的选择基于Locale的语言,而不是其国家.例如:

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));
Run Code Online (Sandbox Code Playgroud)

产生以下输出:

-123.456,78
-123,456.78
Run Code Online (Sandbox Code Playgroud)

我原以为它会跟随这个国家,因为如果我在国内,无论我说英语还是意大利语,那个国家的数字都用小数点分隔符作为逗号.

我的问题是双重的:

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

谢谢.

java locale decimal-point number-formatting

8
推荐指数
2
解决办法
2万
查看次数

标签 统计

decimal-point ×1

java ×1

locale ×1

number-formatting ×1