python中round的用法,python四舍五入的坑

2025-10-29 13:33:31

1、构成round( x [, n] )

参数:

x : 必填,数值表达式;

[, n]  : 可选,需要保留的小数位数,默认为0,即默认保留整数位。

2、简单的来看一下用法

round(10/3) #默认保留整数部分,结果为3;

round(10/3, 2) #默认保留2位小数,结果为3.3;

round(10.676, 2) #默认保留2位小数,结果为10.68。

python中round的用法,python四舍五入的坑

3、但是直接使用round()时,会遇到一些问题,如下:

round(2.675, 2)  #正确值应该是2.68,但这里实际返回的是2.67;

round(2.6754, 2)  #返回2.68,正确;

python中round的用法,python四舍五入的坑

4、所以在处理数据的时候,可能会发生一些,我们不能来理解的情况,如:

0.10 + 0.20 # 返回 0.30000000000000004。

这是因为python存储值的时候,是以近似值存储的,在第三位为“0.005”的时候,实际储存的是“0.004999999999”,所以自动舍去了。

有人提出了“奇进偶舍”的概念,但是python3.8实测并不满足,后面提供2种解决办法。

python中round的用法,python四舍五入的坑

5、方法一 decimal方法:

import decimal as dc # 导入"decimal"模块,并命名为"dc";

from decimal import Decimal as Dc # 导入"decimal"模块中"Decimal"方法,并命名为"Dc";

传入的值需要为字符串:

Dc('2.685').quantize(Dc('0.00'), rounding=dc.ROUND_HALF_UP)

Dc('2.635').quantize(Dc('0.00'), rounding=dc.ROUND_HALF_UP)

Dc('2.685'):为传入的值;

.quantize(Dc('0.00'), rounding=dc.ROUND_HALF_UP)中:

Dc('0.00'):为需要保留的小数位;

rounding=dc.ROUND_HALF_UP:为设定为四舍五入。

可以看到我们传入的值都可以正常处理了。

python中round的用法,python四舍五入的坑

6、方法二 int方法:

也可以根据int方法直接舍去小数点后数值的特性,我们如果要保留2位小数,就先对数值*100,保留3位就*1000,以此类推,最后再将倍数除掉,来达到四舍五入的目的:

int(2.685*100+0.5)/100 # 返回2.69;

int(2.635*100+0.5)/100 # 返回2.64;

这也是笔者经常使用的方法。

python中round的用法,python四舍五入的坑

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢