小编典典

DecimalFormat和Double.valueOf()

java

我试图摆脱我的double值的十进制分隔符之后不必要的符号。我这样做是这样的:

DecimalFormat format = new DecimalFormat("#.#####");
value = Double.valueOf(format.format(41251.50000000012343));

但是,当我运行此代码时,它会抛出:

java.lang.NumberFormatException: For input string: "41251,5"
    at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1224)
    at java.lang.Double.valueOf(Double.java:447)
    at ...

如我所见,在string这样的Double.valueOf()字符串上效果很好"11.1",但是在like这样的字符串上却令人窒息"11,1"。我该如何解决?有没有比这更优雅的方式

Double.valueOf(format.format(41251.50000000012343).replaceAll(",", "."));

有没有办法覆盖类的默认十进制分隔符值DecimalFormat?还有其他想法吗?


阅读 220

收藏
2020-11-13

共1个答案

小编典典

通过

在我的double值的十进制分隔符之后摆脱不必要的符号

您是说要舍入到小数点后5位吗?然后使用

value = Math.round(value*1e5)/1e5;

(当然,Math.floor(value*1e5)/1e5如果您确实希望截断其他数字,也可以)

2020-11-13