无法根据语言环境“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”解析十进制数[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Java 程序在 jpackage 时使用了错误的语言环境

手把手教你7天学会C语言!(第0天二进制数)

c语言16进制转换为10进制数的函数是啥?

C语言进制转换时自动扩展位?(原码反码补码)(打印%o%x时会自动扩展到32位负数先得到其十进制真实数值,再根据其真实数值得到八进制十进制补码)

请教QT中怎么实现10进制数转换为16进制数 最好有代码

如何用Java或C语言解析二进制文件为文本文件?