from _ future _ import division[Python]
《learn to see in the dark》CVPR2018代码阅读报告
__future__模块的存在是为了让人们能够在旧的版本中测试新版本的一些特性。
导入python未来支持的语言特征division(精确除法),当我们没有在程序中导入该特征时,"/“操作符执行的是截断除法(Truncating Division),当我们导入精确除法之后,”/"执行的是精确除法,如下所示:
>>3/4
0
>>> from __future__ import division
>>> 3/4
0.75
导入精确除法后,若要执行截断除法,可以使用"//"操作符:
>>> 3//4
0
在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