python中round函数的注意事项

limalove / 2023-08-19 / 原文

 

多用format格式,decimal模块

 

 

 

“4舍6入5看齐,奇进偶不进”我觉得并不是因为浮点数在计算机表示的问题。计算机浮点数的表示是 ieee 定义的标准规则,如果 python 中存在,没道理其他语言中不存在。事实上是因为该取舍方法比过去的 "四舍五入" 方法在科学计算中更准确。而国家标准也已经规定使用 “4舍6入5看齐,奇进偶不进” 取代"四舍五入".

从统计学的角度上来讲,如果大量数据无脑的采用四舍五入会造成统计结果偏大。而"奇进偶舍"可以将舍入误差降到最低。

奇进偶舍是一种比较精确比较科学的计数保留法,是一种数字修约规则。

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

  •  (1)要求保留位数的后一位如果是4或者4以下的数字,则舍去, 例如 5.214保留两位小数为5.21。
  •  (2)如果保留位数的后一位如果是6或者6以上的数字,则进上去, 例如5.216保留两位小数为5.22。
  •  (3)如果保留位数是保留整数部分或保留一位小数,则要根据保留位来决定奇进偶舍:
 1 >>> round(5.215,2)#实际并没有进位
 2 5.21
 3 >>> round(5.225,2)
 4 5.22
 5 >>>
 6 >>> round(1.5)#此处进位
 7 2
 8 >>> round(1.5)==round(2.5)#偶数舍去
 9 True
10 >>> round(1.15,1)
11 1.1
12 >>> round(1.25,1)
13 1.2
14 >>> round(1.151,1)
15 1.2
16 >>> round(1.251,1)
17 1.3
  •  (4) 如果保留位数的后一位如果是5,且该位数后有数字。则进上去,例如5.2152保留两位小数为5.22,5.2252保留两位小数为5.23,5.22500001保留两位小数为5.23。

从统计学的角度,“奇进偶舍”比“四舍五入”要科学,在大量运算时,它使舍入后的结果误差的均值趋于零,而不是像四舍五入那样逢五就入,导致结果偏向大数,使得误差产生积累进而产生系统误差,“奇进偶舍”使测量结果受到舍入误差的影响降到最低。