Python中一个正整数和一个负整数相除问题(易错点)

下面这段代码输出结果是什么?

a = 1
b = -2
c = a / b
print c
print int(c)
print int(-0.5)

输出结果为:-1,  -1,  0

如果是在C++中

int a = 1;
int b = -2;
int c = a/b;
cout<<c<<endl; //输出 0

这说明一个正整数和一个负整数相除,结果不是期望的结果(-1,而不是期望的0),即在强制转换过程中没有得到预期的强制转换结果。

解决的方法就是:计算过程转换为浮点数,再将结果转化为整数。
a = 1
b = -2
c = a * 1.0 / b # 注意:将一个操作数*1.0,转化为浮点运算
print c # -0.5
print int(c) # 0
print int(-0.5)# 0

注意:必须是将a/b的一个操作数转换为浮点型(通过*1.0,如(a*1.0) /b),对a/b的整体结果转换为浮点数(即a/b *1.0 )仍然是不对的。

作者:JarvisChu
原文链接:Python中一个正整数和一个负整数相除问题(易错点)
版权声明:自由转载-非商用-非衍生-保持署名 | Creative Commons BY-NC-ND 3.0

发表评论