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()
与其他解决方案相比,它编写的代码要少得多,但正如我所说,如果您需要,将来更改精度级别时,该解决方案可能不太舒服
问题
我使用 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()
与其他解决方案相比,它编写的代码要少得多,但正如我所说,如果您需要,将来更改精度级别时,该解决方案可能不太舒服