【发布时间】:2013-08-19 09:45:40
【问题描述】:
在谷歌上搜索了一段时间后,我在这里发帖寻求帮助。
我有两个从函数返回的 float64 变量。 他们两个显然都是1:
>>> x, y = somefunc()
>>> print x,y
>>> if x < 1 : print "x < 1"
>>> if y < 1 : print "y < 1"
1.0 1.0
y < 1
当变量定义为 float32 时,行为会发生变化,在这种情况下,'y
我试过设置
np.set_printoptions(precision=10)
期望看到变量之间的差异,但即便如此,它们在打印时都显示为 1.0。
在这一点上我有点困惑。 有没有办法可视化这些 float64 数字的差异? 是否可以可靠地使用“if/then”来检查 float64 数字?
谢谢 特雷瓦雷斯
【问题讨论】:
-
我不明白你的问题。显然,错误出现在打印表示中,其中
y小于float64情况下的一,并且在使用float32时由于舍入错误而等于(或大于)1。在处理浮点值时,您应该永远使用相等比较。修复一个最小错误(例如epsilon=1e-16或更小/更大,具体取决于应用程序)并执行if abs(number - 1) < epsilon: # number is sufficiently close to 1 to be considered as 1。 -
@Bakuriu 您可以将此作为答案发布...您几乎解释了发生了什么