在第 1 章中我们已经看到 Python 可以做一些数学运算:使用加号(+)完成加法,另外使用星号(*)完成乘法。
如你所料,Python 使用连字号(-)(也称为减号)来做减法:
>>> print 8 - 53
由于计算机键盘上没有除号(÷),所以所有程序都使用前斜杠(/)表示除法。
>>> print 6/23
这是对的。不过有时 Python 做除法时会得到意外的结果:
>>> print 3/21
咦?我还以为计算机精通数学计算呢,原来不过如此!所有人都知道
3 / 2 = 1.5
这到底怎么回事?
嗯,虽然看起来好像很傻,其实 Python 确实想表现得聪明一些。要解释这个问题,你要知道整数和小数。如果你还不知道它们的区别,先来看看术语箱中简单的解释。
术语箱
整数(integer)就是我们平常数数时所说的数,如 1、2、3,另外还包括 0 和负数,如 -1、-2、-3。
小数(decimal number)也称为实数(real number),这些数有小数点而且后面有小数位,如 1.25、0.3752 和 -101.2。
在计算机编程中,小数也称为浮点数(floating-point number,有时简写为 floats,或者如果只有一个浮点数,就简写为 float)。这是因为小数点会“浮动”。0.00123456 或 12345.6 都是浮点数。
因为你输入的 3 和 2 都是整数,所以 Python 认为你同样想要整数作为答案。所以它会把答案 1.5 取整为比它小且最接近的整数,也就是 1。换句话说,Python 完成了不带余数的除法。
要解决这个问题,可以这样试试看:
>>> print 3.0 / 21.5
这样就好多了!如果把两个数中的任何一个作为小数输入,Python 就会知道你想在答案中保留小数部分。
整除
在 Python 2 中,做除法的方式称为“整除”(floor pision)。但 Python 3 的工作方式不一样,在 Python 3 中,如果你使用常规的除法操作符(前斜杠“/”),则做的是常规除法,而不是整除。
>>> print 3/21.5要在 Python 3 中做整除,需要使用两个前斜杠(//):
>>> print 3//21这是 Python 2 和 Python 3 最显著的区别之一,也是导致很多 Python 2 程序与 Python 3 程序不兼容的原因。
切记!
要记住 Python 2 的这种整除行为。这很重要,很多 Python 程序员(包括我自己)都曾经因为忘记这一点犯过错。