在python2.7的doc中。
真正的四舍五入,round(-1.5) = -2 round(1.5) = 2
在python3.5的doc中
文档变成了"values are rounded to the closest multiple of 10 to the power minus ndigits; if two multiples are equally close, rounding is done toward the even choice." 如果距离两边一样远,会保留到偶数的一边。比如round(0.5)和round(-0.5)都会保留到0,而round(1.5)会保留到2
但是:
>>> round(2.675, 2)
>>>2.67
不论我们从python2还是3来看,结果都应该是2.68的,结果它偏偏是2.67,为什么?这跟浮点数的精度有关。我们知道在机器中浮点数不一定能精确表达,因为换算成一串1和0后可能是无限位数的,机器已经做出了截断处理。那么在机器中保存的2.675这个数字就比实际数字要小那么一点点。这一点点就导致了它离2.67要更近一点点,所以保留两位小数时就近似到了2.67。
如果对精度有要求的话,就不要用round()函数了,就得用其他ceil,floor , //等函数。
[decimal函数精度也有问题,from decimal import * Decimal(2.67).quantize(Decimal('0.00')) 结果还是2.67]