从未来导入round
时,它的行为与Python3 round
函数的行为不同。具体来说,它不支持负数舍入。
在Python3中:
>>> round(4781, -2)
4800
在Python2中:
>>> from builtins import round
>>> round(4781, -2)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/dist-packages/future/builtins/newround.py", line 33, in newround
raise NotImplementedError('negative ndigits not supported yet')
NotImplementedError: negative ndigits not supported yet
可能的解决方案包括负舍入的错误处理,编写我自己的round
函数等。如何处理? (隐含地,我要求最佳实践,大多数Pythonic,社区接受等等)
答案 0 :(得分:2)
我打算建议你的自定义功能想法,这样你就可以确保它总是做你想要的,但这似乎是一个特殊的(奇怪的)情况,如果我不使用{{ 1}}我得到
Python 3.6:
future.builtin.round()
和Python 2.7:
>>> round(4781, -2)
4800
似乎只是某个被打破的>>> round(4781, -2)
4800.0
;在这种情况下,您应该避免使用future.builtins
函数。请注意,py3 future.builtins.round()
返回一个整数,而py2 round()
返回一个浮点数,但这似乎是两个库存实现之间的唯一区别(对于简单的舍入操作,例如给出的示例)。