版权声明:未经博主允许不得转载 https://blog.csdn.net/qq_40962368/article/details/83449455
python from __future__ import division
之前一直很困惑,为什么这个模块叫future呢,难道有什么特殊功能能够让人们想到未来吗,最近才恍然大悟。
python的更新和前进是由社区进行推动的,而且是免费开源的,不受大型商业公司的控制,所以比较激进的想法能够很快的用到python新版本的更新和优化中,这就导致不兼容的情况时有发生,python开发者们为了使人们能够顺利的过渡到新版本,特意提供了__future__模块,让人们能够在旧的版本中测试新版本的一些特性。
__future__模块中的division功能提供了精确除法,下面通过python2.x与python3.x来展示关于除法一些规则上的不同。
在python2.x中对于除法有两种情况,如果是整数相除,结果仍是整数,余数会被去掉,这种除法被称为截断除法。
>>> 5/3
1
这里注意,截断除法不是四舍五入,而是直接把小数部分去掉。
如果要作精确除法,必须把其中的一个数变为浮点数:
>>> 5.0/3
1.6666666666666667
而在python3.x中,所有的除法都是精确除法,如果要使用截断除法用“//”表示即可:
>>> 5/3
1.6666666666666667
>>> 5.0/3
1.6666666666666667
>>> 5//3
1
如果在python2.x中想像python3.x中一样使用精确除法和截断除法,就可以使用__future__模块中的division方法来实现。
>>> from __future__ import division;
>>> 5/3
1.6666666666666667
>>> 5//3
1