有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何取整以计算偶数十进制值(例如,如果是2.25,则应取整为2.3,而不是2.2)

我试图使用下面的代码将双精度值格式化为一个小数点,但它会产生两个不同的舍入值

 double d1= 4.55;
 double d2= 17.85;
 DecimalFormat oneDForm = new DecimalFormat("#.0");
 System.out.println(oneDForm.format(d1));
 System.out.println(oneDForm.format(d2));

输出: 4.6 17.8(预期17.9)

但我想要的是,通过对十进制数17.8517.9进行计数来进行汇总,如何实现这一点


共 (2) 个答案

  1. # 1 楼答案

    回答你的问题,

    double d1= 4.55;
    double d2= 17.85;
    DecimalFormat oneDForm = new DecimalFormat("#.0");
    oneDForm.setRoundingMode(RoundingMode.HALF_UP); //You're changing default behavior here
    System.out.println(oneDForm.format(d1));
    System.out.println(oneDForm.format(d2));
    

    您预期的输出为:4.6、17.9

    据我了解,

    不能直接将17.85四舍五入到17.9这是默认行为,四舍五入的工作方式是这样的,即使是小数,它也会四舍五入到可能的最小位数

    例如,如果其为.05、.25、.45。。它将四舍五入到.0、.2、.4,对于奇数小数则相反

    我相信this有助于实现这一目标This帖子与您的帖子非常相似

  2. # 2 楼答案

    普贾里

    十进制格式的默认舍入模式使用半偶数舍入

    According to the document

    “舍入模式”向“最近邻”舍入除非两个邻域都是等距的,在这种情况下,向偶数邻域取整。如果被丢弃分数左边的数字是奇数,则表现为向上取整;如果是偶数,则表现为向下取整。请注意,这是一种取整模式,当在一系列计算中重复应用时,可将累积误差降至最低

    this was also mentioned in