round四舍五入在python2与python3版本间区别
发布时间:2025-09-24 11:04:00
round()方法返回数值的小数点四舍五入n个数字。
语法
以下是round()方法的语法:
round( x ,n)
参数
x --它是一个值,表示需要格式化的值
n --这也是一个值,表示小数点后保留了多少位置
返回值
该方法返回 数值x 小数点四舍五入n个数字
PS: round 四舍五入传入的数据,如果ngigits不传输,默认为0(即保留整数部分).ngigits<0 当整数部分四舍五入时,返回的结果是浮点数.
例子
下面的例子显示了round()方法的使用
#!/usr/bin/python2 print"round(80.23456,2):",round(80.23456,2) print"round(100.000056,3):",round(100.000056,3) print"round(-100.000056,3):",round(-100.000056,3)
当我们操作上述程序时,它会产生以下结果:
round(80.23456,2):80.23 round(100.000056,3):100.0 round(-100.000056,3):-100.0
Python3和Python2版本的区别
Python2将x四舍五入为远离0的最近倍数,如round(0.5)=1, round(-0.5)=-1;
Python3将x四舍五入到最近的偶数倍数,如round(0.5)=0, round(1.5)=2.0, round(2.5)=2.0
代码:
#!/usr/bin/python2 printround(2.635,2) printround(2.645,2) printround(2.655,2) printround(2.665,2) printround(2.675,2)
输出结果
2.63 2.65 2.65 2.67 2.67
round方法缺陷
通过以上例子,你可以发现, round的四舍五入方法似乎与我们所理解的不同, 其实这不是round的bug, 这主要来自于输入时将十进制转换为计算机内部二进制时,在精度有限的情况下无法解决,也无需解决。
Python 的 decimal 该模块可用于解决此问题。
假如你不需要四舍五入,你也可以考虑使用我们最熟悉的print。("%.2f" % 2.675)这样实现。