双打,逗号和点


问题内容

我正在制作一个Android
Java程序,该程序从用户处获取双倍值。如果我在计算机上运行该程序,则由于我的计算机的语言环境为EN_UK,因此运行良好。但是,当我在具有FI_FI语言环境的手机上运行它时,它将无法工作。我知道原因:在英国,人们使用点作为小数点分隔符,但在芬兰,小数点分隔符是逗号。

DecimalFormat df = new DecimalFormat("#.#");
Double returnValue = Double.valueOf(df.format(doubleNumber));

当我使用逗号时,它说java.lang.NumberFormatException: Invalid double: "1234,5"

如何使它们与逗号和点都兼容?


问题答案:

使用DecimalFormat的其他构造函数之一:

new DecimalFormat("#.#", new DecimalFormatSymbols(Locale.US))

然后尝试使用两个分隔符对其进行解析。