ada*_*itz 2 python floating-point shell subtraction
可能重复:
浮点限制
在这里使用Python 2.7.
谁能解释为什么在shell中发生这种情况?
>>> 5.2-5.0
0.20000000000000018
Run Code Online (Sandbox Code Playgroud)
搜索关于没有产生正确的结果(一个非常小的数字和一个非常大的数字)数量的不同尺度得到的东西,但似乎很一般,而且考虑到我使用的数字是相同的规模,我不认为这就是为什么会发生这种情况.
编辑:我想我没有定义"发生这件事"我的意思是它返回0.2 ... 018而不是简单地导致0.2.我得到了打印轮次,并删除了代码段中的打印部分,因为这会产生误导.
你需要了解5.2-5.0确实是0.20000000000000018,而不是0.2.对此的标准解释可以在每个计算机科学家应该知道的关于浮点运算的内容中找到.
如果您不想阅读所有内容,只需接受5.2,5.0和0.20000000000000018都只是近似值,尽可能接近计算机可以获得的数字.
Python有一些技巧可以让你不知道每个计算机科学家应该知道什么并且仍然可以逃脱它.主要的窍门是str(f),也就是说,一个浮点的人类可读再现数被截断为12位数字显著,所以str(5.2-5.0)就是"0.2",不"0.20000000000000018".但是有时候你需要你可以得到的所有精度,所以repr(f)- 也就是说,机器可读的再现 - 不会被截断,所以repr(5.2-5.0)也是如此"0.20000000000000018".
现在唯一需要理解的是解释器shell的功能.正如Ashwini Chaudhary解释的那样,只是评估shell中的某些内容会打印出来repr,而print声明会打印掉它str.
| 归档时间: |
|
| 查看次数: |
386 次 |
| 最近记录: |