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.85
到17.9
进行计数来进行汇总,如何实现这一点
# 1 楼答案
回答你的问题,
您预期的输出为:4.6、17.9
据我了解,
不能直接将
17.85
四舍五入到17.9
这是默认行为,四舍五入的工作方式是这样的,即使是小数,它也会四舍五入到可能的最小位数例如,如果其为.05、.25、.45。。它将四舍五入到.0、.2、.4,对于奇数小数则相反
我相信this有助于实现这一目标This帖子与您的帖子非常相似
# 2 楼答案
普贾里
十进制格式的默认舍入模式使用半偶数舍入
According to the document
“舍入模式”向“最近邻”舍入除非两个邻域都是等距的,在这种情况下,向偶数邻域取整。如果被丢弃分数左边的数字是奇数,则表现为向上取整;如果是偶数,则表现为向下取整。请注意,这是一种取整模式,当在一系列计算中重复应用时,可将累积误差降至最低
this was also mentioned in