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

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

Apr 10, 2014
Coding
Python

本文内容适用于 python 2.x 版本

Python3 中不存在该问题

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

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,如(a1.0) / b),对a/b的整体结果转换为浮点数(即a/b *1.0 )仍然是不对的。