python保留5位小数,python如何不保留小数

  python保留5位小数,python如何不保留小数

  python中保留小数时之所以去掉5,是因为当round函数遇到“. 5”时,如果要选择的位数之前的小数是奇数,就直接去掉,如果是偶数,就向上选择。

  

  round()函数简介

  正如菜鸟教程中介绍的,round()函数用于返回浮点数x的舍入值。

  Round(x[,n])参数X,n都是数值表达式,返回值是X的舍入值.n是保留的小数位数;如果不加n,则只保留x的四舍五入整数部分。

  圆形(2.3)

  注射毒品

  圆形(2.45,1)

  2.5特殊情况

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

  圆形(2.675,2)

  2.67显然,结果不符合四舍五入规则。为什么会这样?原因是:round()函数只有一个参数。当未指定位数时,它返回一个整数,这是最接近的整数,类似于舍入。当指定了要选择的小数位数时,通常使用舍入规则。但在. 5的情况下,如果待选位数前的小数是奇数,则直接丢弃;如果是偶数,则向上选择。

  在项目中经常使用小数位数的舍入。今天群里有人问1.325怎么会变成1.33。

  当时看到这么简单,分分钟就能解决:

  我的回答是这样的。

  圆(1.315,2)有个小伙伴当时回答:

  他想要的结果是1.32,你打印出来是1.31。我看到我想,怎么可能?我自己来经营。

  结果真的是1.31。

  我想都没想过。我以为我是对的。难怪开发人员不能测试他们自己的代码。

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

  打印(十进制(1.325))打印结果:

  问:你看到了吗?48080000000005实际上是1.325。使用二进制时会损失精度。有些小数不能完全用二进制表示。

  这是根本原因。

  是时候有同学说了,为什么有的同学考进了5分之1?你能解释一下原理吗?

  原理同上。我给你举个例子。5可以进1。

  打印(round(1.145,2))

  #打印结果

  1.15继续检查二进制保存值:

  打印(十进制(1.145))

  #打印结果

  1.1450000000000000017763568394002504678106689453125你看,round本身没什么问题,就是二进制存储值有点错误造成的。

  推荐课程:机器学习与实践(黑马程序员)

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: