首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么ipython 3显示的结果是循环的十进制,而不是实际值?[重复]

为什么ipython 3显示的结果是循环的十进制,而不是实际值?[重复]
EN

Stack Overflow用户
提问于 2018-06-11 08:11:20
回答 1查看 0关注 0票数 0

这个问题已经有了一个答案:

  • 浮点数数学坏了吗?24份答复

对于简单的计算,如

1-0.92*0.9

我的ipython 3给出了结果

0.17199999999999993

而不是0.172

EN

回答 1

Stack Overflow用户

发布于 2018-06-11 17:33:06

IPython使用64位浮点算术。不幸的是,浮点算术实际上是二进制的,内部用1和0表示。

浮点算法不可能确定像这样简单的事情0.90.92没错,这意味着你仍然存在舍入错误。这是重复/循环小数的二进制等价物

事实上,浮点算法只能精确地表达一些非整数。x可以用形式表示的x = a/b何地a,b在最低的条件下,a, b是整数,而且b1或者是二次幂。它不能准确地表示十分之一,或任何分母b是5的倍数,或除1或2以外的任何数字。这就像最低项分数a/b不能精确地表示为十进制b包含除25

此外,你必须牢记最重要和最不重要的价值观:它们不能太遥远:1.000000000000000000000001如果双倍的话,那么最右边的(最不重要的)1就会下降。

以下是一些例子:

  • 100=100/1。b是1,意思是100是整数。100代表了。
  • 0.5=1/2。b是2。0.5正好代表。
  • 0.125=1/8。b是2的幂。0.125正好代表。
  • 0.9=9/10。b等于10,乘以5。0.9不能完全代表。
  • 0.92=41/50。b等于50,是5的倍数。0.92也不能得到准确的代表。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100001662

复制
相关文章

相似问题

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