无法根据语言环境“el-GR”解析十进制数[关闭]
Posted
技术标签:
【中文标题】无法根据语言环境“el-GR”解析十进制数[关闭]【英文标题】:Not able to parse Decimal number based on locale "el-GR" [closed] 【发布时间】:2020-05-21 20:10:25 【问题描述】:我无法理解这一点:
public static void main(String... arg)
//el_GR
// Locale locale = new Locale("el", "GR");
Locale locale = Locale.ENGLISH;
NumberFormat numberFormat = DecimalFormat.getInstance(locale);
try
Number value = numberFormat.parse("170.0");
System.out.println(value.doubleValue());
catch (ParseException e)
e.printStackTrace();
使用 Locale.ENGLISH 时,显示 170.0 但是当使用Greek-Greece时,它显示1700.0
为什么 Java 无法为 el-GR 解析十进制数?我应该为这个语言环境定义一个吗?
更新: 谢谢大家的帮助......显然我不是希腊人,我的数学很糟糕......将关闭这个问题。
【问题讨论】:
en.wikipedia.org/wiki/Decimal_separator 首次访问 Google。希腊的小数分隔符是,
它不会解析失败,它将.
解释为一个千分隔符,并忽略它,因为它应该适用于希腊语言环境。
感谢大家的帮助。将关闭问题...
【参考方案1】:
不同的文化使用不同的字符作为decimal separator 和digit grouping delimiter。有些人使用FULL STOP 作为一个,而COMMA 作为另一个。有些,反之亦然。有些使用空格或其他字符。
根据文化规范,12.3 万可以显示为这些或其他格式:
美国:123,456.789
希腊:123.456,789
希腊使用逗号作为小数分隔符,使用 FULL STOP 对数字进行分组。因此,您在希腊语言环境下的输入中的点被解释为放错位置的分组。结果是 1700。
【讨论】:
以上是关于无法根据语言环境“el-GR”解析十进制数[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
C语言进制转换时自动扩展位?(原码反码补码)(打印%o%x时会自动扩展到32位负数先得到其十进制真实数值,再根据其真实数值得到八进制十进制补码)