当我们在用python来处理两个整数(无小数)相除的时候,计算结构的小数部分被截取掉了,只留下整数的部分。有些时候这个功能很有用,但是当我们仅仅需要普通的除法的时候,结果就与我们期望的不符。
[root@rhel6164 ~]# python
Python 2.6.6 (r266:84292, Apr 11 2011, 15:50:32)
[GCC 4.4.4 20100726 (Red Hat 4.4.4-13)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 1/3
0
>>>有两种办法来解决上面的问题,一是用实数取代整数进行除法,二是让python改变除法的执行方式。
[root@rhel6164 ~]# python
Python 2.6.6 (r266:84292, Apr 11 2011, 15:50:32)
[GCC 4.4.4 20100726 (Red Hat 4.4.4-13)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 1/3.0 #用实数取代整数
0.33333333333333331
>>> 1.0/3 #同上
0.33333333333333331
>>> 1.0/3.0 #同上
0.33333333333333331
>>> from __future__ import division #导入了__future__模块中的division函数,现在'/'就不在是上面提到的除法了
>>> 1/3
0.33333333333333331
>>>
>>> 1//3 #python提过了双斜线(//)来实现整除的操作
0__future__模块:__future__ - Record of phased-in incompatible language changes
有传言说Guido van Rossum(Python之父)拥有时光机,因为在人们要求增加语言新特性的时候,这个特性通常都已经实现了。当然,我们是不允许进入这架时光机的。但是Guido很善良,他将时光机的一部分以__future__这个充满魔力的模块的形式融入了Python。通过它可以导入那些在未来会成为标准Python组成部分的新特性。
以上结果是在python2上平台上测试的,python3中的整除(/)操作符会返回小数部分。
[root@rhel5264 ~]$ python
Python 3.2 (r32:88445, Jan 2 2012, 02:50:39)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-46)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 1/3 #返回小数部分
0.3333333333333333
>>>