关于浮点数学。 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?
答案 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