四次元口袋 2019-07-25 13:13 采纳率: 0%
浏览 408

如何在 Java 中将数字四舍五入到小数点后 n 位

我想要一个方法,转换双精度到一个字符串轮,即,如果小数被舍入是5,它总是舍入到以前的数字。这是舍入的标准方法。
我也希望只显示有效数字-也就是说,后面不应该有任何零。
我知道一种方法是使用 String.format :
String.format("%.5g%n", 0.912385);
returns:
0.91239
这个也还行,但它总是显示的数字小数点后5位,把零也显示出来了:
String.format("%.5g%n", 0.912300);
returns:
0.91230
另一个方法是使用DecimalFormatter :
DecimalFormat df = new DecimalFormat("#.#####");
df.format(0.912385);
returns:
0.91238
然而,这接近于四舍五入。也就是说,如果前面的数字是偶数,那么它就会四舍五入。但我想要的是:
0.912385 -> 0.912390.912300 -> 0.9123
在 Java 中实现这一点的最佳方法是什么?

  • 写回答

4条回答

  • weixin_38166347 2019-07-25 13:24
    关注

    使用 setRoundingMode,设置 RoundingMode 来处理问题,然后使用格式模式输出所需的输出。
    例:

    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));}
    
    

    输出

    12123.12350.230.12341234.2125
    
    评论

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题