Java BigDecimal 四舍五入,同时数字中有无意义的 0

Java BigDecimal Rounding while having pointless 0's in the number

问题

我使用 BigDecimal.setScale(7, RoundingMode.HALF_UP) 将数字四舍五入到小数点后 7 位,但是现在如果我得到一个没有任何小数位或少于 7 位的数字,我将无法使用 0数字,例如在四舍五入后 40 这样我会得到 40.0000000.

问题

是否可以使用 SetScale 将数字四舍五入到一定的小数位并同时去掉无意义的 0?

假设您已经进行了舍入,您可以简单地使用 DecimalFormat("0.#")

final double value = 5.1000;
DecimalFormat format = new DecimalFormat("0.#");
System.out.println(format.format(value));

此处的结果将是 5.1,没有尾随零。

所以解决这个问题的另一种方法是使用 BigDecimals 方法,例如 .stripTrailingZeros().toPlainString() 与其他解决方案相比,它编写的代码要少得多,但正如我所说,如果您需要,将来更改精度级别时,该解决方案可能不太舒服