首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >浮点运算

问浮点运算
EN

Stack Overflow用户
提问于 2013-12-07 15:40:05
回答 2查看 67关注 0票数 0

我只是问到为什么python给出的值为3.3-1.1是2.1999999999999997。我想是因为3.3或1.1代表了基数2,不是吗?至少我的观点是对的,http://docs.python.org/2/tutorial/floatingpoint.html。但在这种情况下,3.3和1.1不能被精确地表示为二进制分数,所以答案大约不精确。但是,为什么python给出3.3 + 1.1 = 4.4,而3.3-1.1= 2.1999999999999997,为什么不给4.3999999999997实例呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-07 15:42:38

事实上,4.4也不是精确的。您只需要更精确地打印它就可以看到以下内容:

代码语言:javascript
复制
In [2]: '%.20f' % (3.3 + 1.1)
Out[2]: '4.40000000000000035527'
票数 4
EN

Stack Overflow用户

发布于 2013-12-07 15:46:24

要查看二进制浮点数的确切值,请使用decimal模块。例如,

代码语言:javascript
复制
>>> import decimal
>>> decimal.Decimal(3.3 + 1.1)
Decimal('4.4000000000000003552713678800500929355621337890625')

注意不对称:虽然大多数十进制浮点数不能精确地表示为二进制浮点数,但所有二进制浮点数都可以精确地表示为十进制浮点数。这“基本上是因为”0.1二进制精确为小数点0.5,但0.1小数点不能精确表示为(有限)二进制浮点数。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20443168

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档