round函数是一个用于四舍五入的函数;
其基本语法格式为:round(number,digits);
其中number是需要四舍五入的数,digits是需要小数点后保留的位数;
(1)如果 digits 大于 0,则四舍五入到指定的小数位;
(2)如果 digits 等于 0,则四舍五入到最接近的整数;
(3)如果 digits 小于 0,则在小数点左侧进行四舍五入;
digits的值在默认情况下为0.
例如以下代码:

print("round(123.456789,3)的值为:",round(123.456,2))
print("round(123.456789,-3)的值为:",round(123.456,-2))
print("round(123.456789,0)的值为:",round(123.456,0))

代码运行结果如下:

round(123.456789,3)的值为: 123.46
round(123.456789,-3)的值为: 100.0
round(123.456789,0)的值为: 123.0

浮点数间运算常用到round函数,因为浮点数之间运算存在不确定尾数(这不是bug,因为浮点数对应的是一个无限循环的二进制数,而计算机在运算时只截取其前面的一部分二进制数,所以部分浮点数之间运算存在着不确定尾数,此时用round函数可以很好地解决这个问题)
但是round函数在使用时有一个缺陷,这个缺陷是由版本不同造成的。
比如同样是round(0.5)这段代码,python 2给出的结果是1.0,而python 3给出的结果是0.下面给出具体原因:
在python 2中给出的语法是保留值将保留到离上一位更近的一端(四舍六入),如果距离两端一样远,则保留到离0远的一边。所以round(0.5)会近似到1,而round(-0.5)会近似到-1;
在python 3中给出的语法是如果距离两边一样远,会保留到偶数的一边。比如round(0.5)和round(-0.5)都会保留到0,而round(1.5)会保留到2。
同时在使用round函数还有另一个缺陷:
如round(2.675,2)的结果。不论我们从python2还是3来看,结果都应该是2.68的,结果它偏偏是2.67,为什么?这跟浮点数的精度有关。我们知道在机器中浮点数不一定能精确表达,因为换算成一串1和0后可能是无限位数的,机器已经做出了截断处理。那么在机器中保存的2.675这个数字就比实际数字要小那么一点点。这一点点就导致了它离2.67要更近一点点,所以保留两位小数时就近似到了2.67。
所以除非对精确度没什么要求,否则尽量避开用round()函数。近似计算我们还有其他的选择:
(1)使用math模块中的一些函数,比如math.ceiling(天花板除法)。(2)python自带整除,python2中是/,3中是//,还有div函数。
(3)字符串格式化可以做截断使用,例如 “%.2f” % value(保留两位小数并变成字符串)。