发布日期:2018-03-26
在Java中如何将一个数舍入到小数点后n位+ 查看更多
在Java中如何将一个数舍入到小数点后n位
+ 查看更多
发布日期:2018-03-10 11:59
分类:JAVA
浏览次数:100
我想要一个可以将double转化为String的方法,被转化的这个小数采用half-up的方法取舍-即如果舍去的数字是5,则向上进一。这是大多数人在多数情况下期望的标准方法。
我还想只显示有效数字,即不应该有0尾随。
我知道有一个string.format方法:
我还想只显示有效数字,即不应该有0尾随。
我知道有一个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然而,你可以看到这使用half-even方法舍入。 也就是说,如果前一个数字是偶数,它将向下舍入。 我想要的是这样:
0.912385 -> 0.91239 0.912300 -> 0.9123在Java中实现这个的最好方法是什么?
回答:
使用setRoundingMode,显式地设置RoundingMode以处理half-even的问题,然后使用你需要的输出格式。例如:
DecimalFormat df = new DecimalFormat("#.####"); df.setRoundingMode(RoundingMode.CEILING); for (Number n : Arrays.asList(12, 123.12345, 0.23, 0.1, 2341234.212431324)) { Double d = n.doubleValue(); System.out.println(df.format(d)); }输出:
12 123.1235 0.23 0.1 2341234.2125