舍入

四舍五入规则是人们习惯采用的一种数字修约规则。


四舍五入规则的具体使用方法是:

在需要保留有效数字的位次后一位,逢五就进,逢四就舍。

例如:将数字2.1875精确保留到千分位(小数点后第三位),因小数点后第四位数字为5,按照此规则,应向前一位进一,所以结果为2.188

按照四舍五入规则进行数字修约时,应一次修约到指定的位数,不可以进行数次修约,否则将有可能得到错误的结果。例如将数字15.4565修约为两位有效数字时,应一步到位:15.4565——15(正确)。如果分步修约将得到错误的结果:15.4565——15.457——15.46——15.5——16(错误)。

四舍五入修约规则,逢五就进,必然会造成结果的系统偏高,误差偏大,为了避免这样的状况出现,尽量减小因修约而产生的误差,在某些时候需要使用四舍六入五留双的修约规则。


银行舍入法,二分法的极致。

奇进偶舍,又称为四舍六入五成双规则、银行舍入法(Banker's Rounding),是一种计数保留法,是一种数字修约规则。从统计学的角度,奇进偶舍四舍五入更为精确:在大量运算时,因为舍入后的结果有的变大,有的变小,更使舍入后的结果误差均值趋于零。而不是像四舍五入那样逢五就进位,导致结果偏向大数,使得误差产生积累进而产生系统误差。奇进偶舍使测量结果受到舍入误差的影响降到最低。


计算过程

其具体要求举例如下(以保留两位小数为例):

1)要求保留位数的后一位如果是4,则舍去。例如5.214保留两位小数为5.21


2)如果保留位数的后一位如果是6,则进上去。例如5.216保留两位小数为5.22

3)如果保留位数的后一位如果是5,而且5后面不再有数,要根据应看尾数“5”的前一位决定是舍去还是进入: 如果是奇数则进入,如果是偶数则舍去。例如5.215保留两位小数为5.22 5.225保留两位小数为5.22

4)如果保留位数的后一位如果是5,而且5后面仍有数。例如5.2254保留两位小数为5.23,也就是说如果5后面还有数据,则无论奇偶都要进入。


按照四舍六入五成双规则进行数字简化时,也应像四舍五入规则那样,一次性简化到指定的位数,不可以进行数次简化,否则得到的结果也有可能是错误的。


单步加、乘法

对于一步加法或乘法,也有一定的修约规则。

加法:在运算前,将所有的加数都修约到各加数中最高的尾数位。然后相加,运算后不修约


例如:计算3.14159+97.182+0.316228


3.14159+97.182+0.316228

=3.142+97.182+0.316 (此步修约)

=100.640 (尾数的0不可省略)


乘法:在运算前,将所有的乘数都修约到各乘数中最少的有效数字位数。然后相乘,运算后将乘积修约到相同的有效数字位数。但如果有乘数为准确数或1位有效数字,可不参与修约。


例如:计算100.57234×3×6.190×0.31945


100.57234×3×6.190×0.31945

=100.6×3×6.190×0.3194 (3不参与修约;0.31945 的修约用五留双规则)

=596.6845548 (此步修约)

=596.7


java支持7种舍入法:

      1 ROUND_UP:远离零方向舍入。向绝对值最大的方向舍入,只要舍弃位非0即进位。

      2 ROUND_DOWN:趋向零方向舍入。向绝对值最小的方向输入,所有的位都要舍弃,不存在进位情况。

     3 ROUND_CEILING:向正无穷方向舍入。向正最大方向靠拢。若是正数,舍入行为类似于ROUND_UP,若为负数,舍入行为类似于ROUND_DOWNMath.round()方法就是使用的此模式。

      4 ROUND_FLOOR:向负无穷方向舍入。向负无穷方向靠拢。若是正数,舍入行为类似于ROUND_DOWN;若为负数,舍入行为类似于ROUND_UP

      5 HALF_UP:最近数字舍入(5)。这是我们最经典的四舍五入。

      6 HALF_DOWN:最近数字舍入(5)。在这里5是要舍弃的。

      7 HAIL_EVEN:银行家舍入法。


你可能感兴趣的:(四舍五入)