【发布时间】:2023-02-08 11:45:36
【问题描述】:
我想要的是一种将 double 转换为字符串的方法,该字符串使用 half-up 方法四舍五入 - 即,如果要四舍五入的小数是 5,它总是四舍五入到下一个数字。在大多数情况下,这是大多数人期望的标准四舍五入方法。
我也希望只显示有效数字 - 即不应该有任何尾随零。
我知道这样做的一种方法是使用 String.format 方法:
String.format("%.5g%n", 0.912385);
回报:
0.91239
这很好,但是它总是显示小数点后 5 位的数字,即使它们并不重要:
String.format("%.5g%n", 0.912300);
回报:
0.91230
另一种方法是使用DecimalFormatter:
DecimalFormat df = new DecimalFormat("#.#####");
df.format(0.912385);
回报:
0.91238
但是,正如您所见,这使用了半偶数舍入。也就是说,如果前一位是偶数,它将向下舍入。我想要的是:
0.912385 -> 0.91239
0.912300 -> 0.9123
在 Java 中实现此目的的最佳方法是什么?
【问题讨论】:
标签: java decimal rounding digits