双打、逗号和点

2022-09-02 20:19:28

我正在制作一个Android Java程序,它从用户那里获得双倍值。如果我在计算机上运行该程序,由于计算机的区域设置,它工作得很好,EN_UK。但是,当我在具有FI_FI区域设置的手机上运行它时,它将不起作用。我知道原因:在英国,人们使用点作为小数点分隔符,但在芬兰,小数点分隔符是逗号。

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

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

我怎样才能让它同时使用它们,逗号和点?


答案 1

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

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

然后尝试使用两个分隔符解析它。


答案 2

using 将生成默认区域设置的正确符号,因此您将针对运行的任何平台正确使用它。DecimalFormatSymbols.getInstance()

DecimalFormat df = new DecimalFormat("#.#", DecimalFormatSymbols.getInstance());

推荐