Python float为什么不解释精度?

时间:2017-08-01 18:06:39

标签: floating-point decimal python-3.5

关于浮点数学。 2017年是否有可能重新设计计算机/标准以便您拥有

- int x

- 十进制(固定位置没有小径xx或 x.xxn )((我在下面的答案中创建了一个hack))

- float (此处允许使用路径,如浮动 x.n?的深奥性质)

下面是我写的原始文字和一个解决浮点CppCon 2015的视频:

我正在编写一个迭代器,它将从0.0循环到3.0。

i = 0.0
while i < 3:
  do something with i
  i += 0.2

但是当我做+ = 0.2时,得到的数字不是预期的0.2然后是0.4但是

0.19999990然后是0.3999999999

如果我绕圈,那就无济于事。

如果我做了

from decimal import Decimal, getcontext 

数字变得更糟。

Python能否以某种方式疯狂(e)正确地解释它是0.2增量意味着那个而不是更长的小数?我的意思是在int和float之间有什么东西可以做到这一点,其中十进制没有。或者我在学校被教导错误,0.1 真的意味着0.1000009?

1 个答案:

答案 0 :(得分:-1)

编辑:&#34;解决方案&#34;下面似乎是一个解决方案,直到它被测试了好几次。它和普通花车一样糟糕。

老人:我做了一个黑客.....它&#34;工作&#34;并且只要程序员愿意忍受嵌套的while循环,就可以缩小规模。我称之为嵌套的整数十进制方法飞行的驴

a1 = 0
a2 = 0
b = str(a1)+'.'+str(a2)
float(b)

一个例子:

while a1 < 3:
  b2 = 0
  while a2 < 10:
    b = str(a1)+'.'+str(a2)
    do stuff including float(b)
    a2 += 1
  a1 += 1