双值追加附加 0

Double value appending with additional 0

Double amount = 0.001

但金额值设置为 0.0010

我们最后有严格的条件,在存储到数据库之前只允许 3 个小数位。但不知何故它在最后附加了 0

我试过了

 DecimalFormat decimalFormat = new DecimalFormat("#.###");
 String formatedString = decimalFormat.format(amount));

此时 formatedString 在 0.001 中是正确的。但如果我再次改回 Double。

Double.valueOf(decimalFormat.format(formatedString));

它再次在 0.0010 末尾添加 0。如何在默认情况下删除 Double 类型末尾的 0?

就Double而言,0.001和0.0010是一回事。如果您将其作为双精度存储在数据库中,那么一切都很好,您应该查看用于 显示 值的任何程序的格式。

您可以使用 class BigDecimal 来定义您需要的比例和舍入模式。即:

BigDecimal val = new BigDecimal("1.12345").setScale(4, RoundingMode.HALF_EVEN);
val.doubleValue();

https://docs.oracle.com/javase/8/docs/api/java/math/BigDecimal.html