| 网站首页 | 业界新闻 | 小组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 645 人关注过本帖
标题:计算怪事
只看楼主 加入收藏
财喜猫
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2019-7-27
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:5 
计算怪事
新手,装了个python3.7,计算一个大数除法,结果不对,结果应该是10789874107241813,但程序中计算的结果是10789874107241812,最后一个数字不同的是3和2,手工算了一下,应该是10789874107241813。
代码很简单:
a=(7193249404827875*3+1);
a=int(a/2);
print(a);
结果:
C:\Users\Administrator.USER-20180612PO\AppData\Local\Programs\Python\Python37>c:\Users\Administrator.USER-20180612PO\AppData\Local\Programs\Python\Python37\Uchuo.py
10789874107241812
这个bug是什么原因?
搜索更多相关主题的帖子: 计算 Python 结果 Users Local 
2019-08-14 16:39
TysonKoothra
Rank: 5Rank: 5
等 级:职业侠客
威 望:7
帖 子:71
专家分:374
注 册:2018-10-21
收藏
得分:5 
我的第一次回复是这样的:int() 取整,没有进行四舍五入,只取了整数部分。
其实出现这样错误的原因是,这个数字太大了,大到让浮点数为难了。
程序代码:
>>> a = 7193249404827875*3 + 1
>>> a / 2
1.0789874107241812e+16
>>> 1.0789874107241812e+16 == 1.0789874107241813e+16 # 由于浮点数有精度,可以看到这两个浮点数在python里面是相等的
True


[此贴子已经被作者于2019-8-14 21:52编辑过]

2019-08-14 17:37
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:版主
威 望:402
帖 子:13496
专家分:52175
注 册:2012-10-18
收藏
得分:5 
回复 楼主 财喜猫
已知能整除的话 用地板除:
>>> print(a//2)
10789874107241813

DO IT YOURSELF !
2019-08-14 18:37
财喜猫
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2019-7-27
收藏
得分:0 
回复 3楼 wp231957
试了一下,好了,感谢!
2019-08-14 20:32
财喜猫
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2019-7-27
收藏
得分:0 
回复 2楼 TysonKoothra
感谢
2019-08-14 20:32
Drunk
Rank: 1
等 级:新手上路
帖 子:8
专家分:5
注 册:2019-8-14
收藏
得分:5 
回复 3楼 wp231957
好强
2019-08-15 11:50
快速回复:计算怪事
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.284404 second(s), 8 queries.
Copyright©2004-2020, BCCN.NET, All Rights Reserved