Python中的round()函数原理

1. 问题:自己以前不知道这个差别,所以找了很久才找出这个bug,希望大家注意:

  看下示例程序:

  round()函数的功能是“四舍五入”,从以上结果可以发现,和我们普遍意义上理解的“四舍五入”差别还是很大的、

2. 原因:

  究其原因是因为round()的采用的四舍五入的标准是一种称为:“四舍六入五成双”的舍入方法:

  四舍六入五成双是一种比较精确比较科学的计数保留法,是一种数字修约规则,它的精确和科学是基于统计学上的:

    从统计学的角度,“四舍六入五成双”比“四舍五入”要科学,在大量运算时,它使舍入后的结果误差的均值趋于零,而不是像四舍五入那样逢五就入,导致

    结果偏向大数,使得误差产生积累进而产生系统误差,“四舍六入五成双”使测量结果受到舍入误差的影响降到最低。例如:1.15+1.25+1.35+1.45=5.2,若

  按“四舍五入”取一位小数计算:1.2+1.3+1.4+1.5=5.4,按“四舍六入五成双”计算,1.2+1.2+1.4+1.4=5.2,舍入后的结果更能反映实际结果。  

3. 总结:没有看到特别好的方法,一般比较普遍的方法是自己重写一个函数完成四舍五入的功能

原文地址:https://www.cnblogs.com/Joyes1989/p/3150260.html