我刚开始用Python编写代码,在一些非常基本的东西上遇到了问题。我在这个网站上搜索了不相等的数字,但只找到了一些与Java有关的东西。我有一个非常简单的问题。为什么2.2=2.2而不是2.4!= 2.4? 下面给出了代码,下面是我得到的输出的屏幕截图:https://drive.google.com/file/d/0Bz3Lwr6GHeMLR1Nwc2hJRkZWQ3M/view
import os
import numpy
Mmin = 2.1
Mmax = 6.5
Magnitude = numpy.arange(Mmin, Mmax, 0.10)
print Magnitude
x = Magnitude[1]
y = 2.2
print x
print y
print x == y
a = Magnitude[3]
b = 2.4
print a
print b
print a == b
任何存储浮点数的语言通常都将它们存储为IEEE 32或64位二进制文件,它们基本上是以2为基数的科学记数法,因此永远不会是“2.1”或“2.4”。因此,在与代码中的浮点进行任何“==”比较时要非常小心。即使数字开始相等,任何数学运算四舍五入都可能使你偏离一个LSB,破坏你的代码。你知道吗
在您的示例中,更好的方法可能是使用浮点值10倍的整数。这样你的代码可能也会更快。需要给出结果时转换为浮点:
下面的一些示例代码更清楚地说明了这一点。我用的是1/9,它不能用以2为基数或10为基数的浮点表示法精确表示:
输出如下:
相关问题 更多 >
编程相关推荐