【发布时间】:2010-09-14 07:13:20
【问题描述】:
我想要的是一种将 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