当前位置: 首页 > 图灵资讯 > 行业资讯> python里保留小数时5为什么舍去

python里保留小数时5为什么舍去

来源:图灵python
时间: 2025-02-09 17:42:34

在python中保留小数时5舍弃的原因是:round函数在遇到“.5”在这种情况下,如果要选择的位数前的小数是奇数,则直接放弃,如果是偶数则向上选择。

round( )函数简介

菜鸟教程介绍,round() 函数的作用是四舍五入值返回浮点x。

>round(x[,n])

参数x、n均为数值表达式,返回值为x的四舍五入值。n是保留的小数位数,不加n则只保留x四舍五入后的整数部分。

>>>round(2.3)
2
>>>round(2.45,1)
2.5

特殊情况

以上结果没有错,这里再用2.675测试一下:

>>>round(2.675,2)
2.67

显然,结果不符合四舍五入的规则。为什么会这样?原因是:round()函数只有一个参数。当不指定位数时,返回一个整数,这是最接近的整数,类似于四舍五入。当指定选择的小数点位数时,一般采用四舍五入的规则,但遇到.5时,如果要选择的位数前的小数是奇数,则直接放弃,如果是偶数则向上选择。

小数位的四舍五入在项目中经常使用,今天群里有人提出1.325 怎样才能变成1.33?

那时候我看到这么简单,分秒就能解决:

这是我的回复

round(1.315,2)

有个小伙伴 当时回答:

他想要的结果是 1.32, 你打印的是1.31,我觉得怎么可能,我自己操作,

结果真是1.31 .

我想都没想。我认为我是对的。嗯,难怪我不能开发和测试我的代码.

我开始寻找原因,我们通过代码解释:

print(Decimal(1.325))

打印结果:

1.3249999999999999555910790149937383830547332763671875

你看到了吗? 实际1.325用二进制转化为精度损失。有些小数不能完全用二进制表示。这是根本原因.

有些学生应该说,为什么? 有的五能进1 你能解释下一个原则吗?原理和上面一样。让我举个例子 5可以进1

print(round(1.145,2))
#打印结果
1.15

继续检查二进制保存值:

print(Decimal(1.145))
#打印结果
1.145000000000000017763568394002504646778106689453125

大家都明白了 ,round 没有问题,但是二进制保存值有点误差造成的.

推荐课程:学习和练习机器学习(黑马程序员)

上一篇:

python如何打开音乐文件

下一篇:

返回列表