在 python2 版本中好像发现了有趣的东西——如果两个整数相除的话得到的结果跟我们想象中的有时候并不一样。比如,在python2中,1 / 2 得到的结果是 0,这就很奇妙了。查阅了一下资料,原来是python里面的一个“陷阱”——整数除法,即一个整数被另外一个整数除时得到的结果的小数部分会被解除,只留下整数部分,所以才有了上文的 1 / 2 = 0 。
在python2里面如果想要运行精确算法的话有几种实现方式:
一种是参与除法的两个数中只要有一个为实数(即python里面的浮点数),运算结果即为浮点数;
一种是导入语言特征中的division(精确除法),即在IDLE执行
> from __future__ import division
,当我们导入该特征之后,就能运行普通的除法运算了。
(注意一下, __future__
前后都是双下划线,而且前后都留有空格)
PS:然而在 python3 里面已经直接支持精确除法了,也就不用再自己导入division了。