gpt4 book ai didi

java - 为什么德语本地化的 DecimalFormat 在 Java 中成功地将 "3.2"解析为十进制?

转载 作者:行者123 更新时间:2023-12-02 01:50:42 25 4
gpt4 key购买 nike

我希望如此

var decimal = DecimalFormat.getInstance(locale).parse(number);

当语言环境为 de_DE 且数字为“3.2”时,将产生 ParseException。不是此区域设置的有效分隔符。为什么是这样?区域设置的想法不是所有这些格式问题都以标准化方式处理吗?

最佳答案

句号在德语数字解析中实际上没有任何意义

commentedFULL STOP (.) 德语字符是 thousands grouping mark (不是 decimal separator )。它的使用不是语义,没有任何意义。 DecimalFormat 不强制执行任何有关对特定位数进行分组的规则。

因此,在您的代码中该点实际上被忽略了32 被视为 32,因此被解析为三十二。

示例代码。

//Locale locale = Locale.US ;      // Parses FULL STOP as a decimal separator, with 3.2 as result. 
Locale locale = Locale.GERMANY ; // Parses FULL STOP as a digit grouping, with 32 as result.
String input = "3.2" ;
var decimal = DecimalFormat.getInstance( locale ).parse( input );
System.out.println( decimal ) ;

查看此code run live at IdeOne.com .

32

关于java - 为什么德语本地化的 DecimalFormat 在 Java 中成功地将 "3.2"解析为十进制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70383872/

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