IEEE754标准规定的五种四舍五入方法

先看下如下Java代码:
double dTest=82.545d;
      DecimalFormat format=new DecimalFormat("0.00");
      System.out.println(format.format(dTest));

你觉得会输出什么?82.55?还是82.54?


再试下这段代码:
double dTest=82.535d;
      DecimalFormat format=new DecimalFormat("0.00");
      System.out.println(format.format(dTest));
你觉得会输出什么?82.53?还是82.54?

先别猜,自己运行下……

或者有人认为这是DecimalFormat的一个BUG?
不是的,这其实是IEEE754标准规定的一种“to even”的四舍五入的方法,即:
该方法在省略数据只有一个 5 的情况下,需要看前面一位。若为偶数则省略,若为奇数则进位,也就是偶数优先。

IEEE754规定了如下的几种四舍五入的标准,分别举例说明其意义:
 

  away from zero             例:3.215 > 3.22-3.215 > -3.22

towards zero               例:3.215 > 3.21-3.215 > -3.21

   to even                    例:3.215 > 3.223.245 > 3.24

towards positive infinity      例:3.215 > 3.22-3.215 > -3.21

 towards negative infinity      例:3.215 > 3.21-3.215 > -3.22


我们常规意义上的“四舍五入”是“away from zero”的方式。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值