国产成人AV无码一二三区,少女1到100集,国产精品久久久久精品综合紧,巜公妇之诱感肉欲HD在线播放

文章 > Python基础教程 > python里保留小数时5为什么舍去

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

python四舍五入

头像

流芳

2020-07-08 09:45:023436浏览 · 0收藏 · 0评论

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 本身没有问题,而是二进制保存的值有点误差导致的.

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

关注

关注公众号,随时随地在线学习

本教程部分素材来源于网络,版权问题联系站长!

粗大挺进亲女小雅小流| 免费观看已满十八岁电视剧高清版 | B站未过审的跳舞视频| 有夫之妇精油按摩的功效与作用| 大杂烩(TXT)小说阅读| 不许穿内裤随时挨C调教H| 日本M码和欧洲码的区别AS. | 乳腺增生| 网曝黑料猛料吃瓜网| 日韩精品| 《厨房激战5》完整版在线观看| 老师穿白色双开真丝旗袍怎么穿| 喜爰夜蒲未删减版| 《丰满的女邻居》播放| 电影《轮番上阵》| 成品人和精品人的区别在哪里知乎| 交换朋友的老婆2中字谜给看| 母与子免费观看大全电视剧邻居大.. | 星空无限传媒免费观看电视剧| 国外成品网站1688入口在哪| 局长边摸边吃奶边做爰| 电视剧情满四合院| 99久久国产精品久久99| 六间房直播大厅| 黑色蕾丝透视露胸旗袍连衣裙| 两个奶头被吃得又翘又肿特别疼| 免费观看B站刺激战场2023| 《下班后的办公室》上线| EXO妈妈MV高清视频播放| 比白洁还牛的四大书| 一母四女共一婿的全诗解读 | 轮流和两个男人一起很容易染病吗| 法国《监狱伦理3》| 《野外強轰》完整版| 欧美-区二区三区| 大肉大捧一进一出XXOO| 巨茎挺进李淑芬的体内视频| 停电了同桌把我拉入怀中小说| 第1章品尝朋友娇妻| 《黏糊糊的你》免费观看| 澳门在线