int(9.99999999999999999999999)为什么是10
如题。。。我发现当加了很多位小数后变成了10,而不是9.这是为什么,因为这个原因,在之后使用这个函数是不是有什么要注意的? 还挺有意思,应该是数大了以后就理解成了9循环?9循环等于1
其实int也是能四舍五入的,例如int(3.6)
打印3imt(3.6+0.5)
打印4
想要四舍五入,只需加0.5 经过一系列实验,发现python浮点数超过15位,就会当作循环小数处理~
可以打印22/7看看
所以,9.99999999999999是10,也不奇怪了。
求最佳~ 青出于蓝 发表于 2020-6-25 07:32
其实int也是能四舍五入的,例如
想要四舍五入,只需加0.5
'imt'?
'int'! int后小数位在15位以内不不进位,超过15位的就进位! 青出于蓝 发表于 2020-6-25 07:47
经过一系列实验,发现python浮点数超过15位,就会当作循环小数处理~
可以打印22/7看看
所以,9.99999999 ...
计算机中不存在循环小数。
建议说话之前多验证一下。 这个东西应该是跟编译器机制有关。 一切奥秘都在机器语言中 heidern0612 发表于 2020-6-25 08:09
这个东西应该是跟编译器机制有关。
{:10_277:}指的是编译 Python3 的编译器吗 永恒的蓝色梦想 发表于 2020-6-25 08:18
指的是编译 Python3 的编译器吗
嗯,我记得不同的编译器,好像精确度不一样,小整数池也不一样。 永恒的蓝色梦想 发表于 2020-6-25 08:06
计算机中不存在循环小数。
建议说话之前多验证一下。
只取前15位。当小数到一定大时,就会进1? xizi123 发表于 2020-6-25 08:04
int后小数位在15位以内不不进位,超过15位的就进位!
ipad pythonIDEA3与你这个不一样喔 青出于蓝 发表于 2020-6-25 08:23
ipad pythonIDEA3与你这个不一样喔
如果是你说这样的话,这个可能和电脑位数,编译器不同版本,系统有关系吧
但是楼主不必纠结于此,也不需要注意什么,你想想超出15位小数是什么概念,非常非常大了精确度了
我们正常情况都不会用精确度这么高精度的计算,你如果真的需要算这么精确的数字,应该也用不着 Python ,又或者说用其他什么神奇的工具?
没事,正常我们使用就这样了,Python 默认的小数,看看下面的:
>>> 2.3333333333333333
2.3333333333333335
大于15位小数时候 Python 就有误差了,自动增大了,这也是导致你为什么 int 会进 1 的原因吧
Twilight6 发表于 2020-6-25 08:38
如果是你说这样的话,这个可能和电脑位数,编译器不同版本,系统有关系吧
但是楼主不必纠结于此 ...
Python 的高精还是很好用的from decimal import Decimal 永恒的蓝色梦想 发表于 2020-6-25 08:55
Python 的高精还是很好用的
嗯嗯 我都忘了还有这个模块 并不是每个浮点数计算机都能表示,只能把不能精确表示的,“靠”到某一个能表示的数字上。
>>> a = 9.99999999999999999999999
>>> a
10.0 应该Python3只能读到小数点后15位{:10_277:} 哇(⊙o⊙),竟然int不只是舍1,还有循环进一,学到了
页:
[1]