python 比较 int float 问题
我有这样的代码:
def fit(self,p1,p2,w):
p=p1
m=self.bit(p,w)
if p1.y!=p2.y:
if m&0x30:
p.y=w.y1 if m&0x10 else w.y2-1
try:
p.x=int((p.y-p2.y)*(p1.x-p2.x)/(p1.y-p2.y)+p2.x)
except Exception,e:
print e
print p1.y!=p2.y
print p1.y,p2.y
输出是:
cannot convert float NaN to integer
False
199 199.0
我不知道为什么 p1.y!=p2.y
计算结果为 true,然后在异常中它计算结果为 false
我正在运行 python 2.6.6
I have this code:
def fit(self,p1,p2,w):
p=p1
m=self.bit(p,w)
if p1.y!=p2.y:
if m&0x30:
p.y=w.y1 if m&0x10 else w.y2-1
try:
p.x=int((p.y-p2.y)*(p1.x-p2.x)/(p1.y-p2.y)+p2.x)
except Exception,e:
print e
print p1.y!=p2.y
print p1.y,p2.y
The output is:
cannot convert float NaN to integer
False
199 199.0
I have no idea why p1.y!=p2.y
evaluates to true and then in the exception it evaluates to false
I'm running python 2.6.6
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您正在除
0/0
!这意味着
现在我们正在通过以下方式设计 0:
所以在这种情况下,您尝试执行
0/0
然后在整个事情的末尾,您尝试添加
p2.x
> 我相信这就是为什么你会收到错误无法将浮点NaN转换为整数
而不是ZeroDivisionError:整数除法或以零为模
它真的很容易解决。将
if p1.y!=p2.y:
第 4 行更改为If p1.y-p2.y != 0:
You are dividing
0/0
!This means
Now we are devising 0 by this:
So in this case you are trying to do
0/0
Then at the end of the whole thing you try to add
p2.x
and i believe thats why you get the errorcannot convert float NaN to integer
and notZeroDivisionError: integer division or modulo by zero
Its really easy to solve. change
if p1.y!=p2.y:
line 4 toIf p1.y-p2.y != 0: