双值追加附加 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
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