首页 > 解决方案 > 无法根据语言环境“el-GR”解析十进制数

问题描述

我无法理解这一点:

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 的十进制数?我应该为这个语言环境定义一个吗?

更新:谢谢大家的帮助......显然我不是希腊人,我的数学很糟糕......将关闭这个问题。

标签: javalocalenumber-formattingdecimalformat

解决方案


不同的文化使用不同的字符作为小数分隔符数字分组分隔符。有些人使用FULL STOP一个,而COMMA另一个。有些,反之亦然。有些使用空格或其他字符。

根据文化规范,12.3 万个可以显示为这些或其他格式:

美国:123,456.789

希腊:123.456,789

希腊使用 COMMA 作为小数分隔符,使用 FULL STOP 对数字进行分组。因此,您在希腊语言环境下的输入中的点被解释为放错位置的分组。结果是1700。


推荐阅读