好问题
Good  Question
  • 首 页
  • 问题
    • PHP
    • JAVA
    • CPlusPlus
    • C#
    • SQL
  • 关 于
  • 联 系
在Java中如何将一个数舍入到小数点后n位 关闭 返回上一级  

在Java中如何将一个数舍入到小数点后n位
+ 查看更多

发布日期:2018-03-10 11:59
分类:JAVA
浏览次数:100
我想要一个可以将double转化为String的方法,被转化的这个小数采用half-up的方法取舍-即如果舍去的数字是5,则向上进一。这是大多数人在多数情况下期望的标准方法。
我还想只显示有效数字,即不应该有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
上一篇如何使用JAVA生成MD5哈希值?
通过属性来对ArrayList中的自定义对象排序下一篇
下一篇通过属性来对ArrayList中的自定义对象排序

最新文章

  • 函数`__construct`用来干嘛的
    发布日期:2018-03-26
  • 通过访客的IP得到他们的地区
    发布日期:2018-03-26
  • 合并两个PHP对象的最好的方法是什么?
    发布日期:2018-03-26
  • 该如何把一该如何把一个对象转化成数组?
    发布日期:2018-03-26
  • 什么是输出缓冲区?
    发布日期:2018-03-26
  • 在PHP中怎么把用逗号分隔的字符串分隔在一个数组里?
    发布日期:2018-03-26
  • 在PHP中使用foreach循环时查找数组的最后一个元素
    发布日期:2018-03-26
关于好问
收集整理一些有用的问题和回答,造福中国的程序旺和IT喵们!
友情链接
起飞页 
相关信息
版权声明
Copyright © 2016 - 2022  苏州卡达网络科技有限公司 备案号:苏ICP备09008221号