在Python中使用除法运算符时,如何获取十进制值?

时间:2020-03-06 14:33:43  来源:igfitidea点击:

例如,标准除法符号" /"四舍五入为零:

>>> 4 / 100
0

但是,我希望它返回0.04. 我要用什么?

解决方案

尝试4.0 / 100

简单路线4 / 100.0

或者

4.0 / 100

我们需要告诉Python使用浮点值,而不是整数。我们可以简单地通过在输入中使用小数点来做到这一点:

>>> 4/100.0
0.040000000000000001

共有三个选项:

>>> 4 / float(100)
0.04
>>> 4 / 100.0
0.04

与C,C ++,Java等的行为相同,或者

>>> from __future__ import division
>>> 4 / 100
0.04

我们还可以通过将参数-Qnew传递给Python解释器来激活此行为:

$ python -Qnew
>>> 4 / 100
0.04

第二个选项将是Python 3.0中的默认选项。如果要使用旧的整数除法,则必须使用//运算符。

编辑:添加了有关-Qnew的部分,谢谢!

将一个或者两个术语设为浮点数,如下所示:

4.0/100.0

或者,打开Python 3.0中默认的功能,即"真正的分裂",该功能可以满足需求。在模块或者脚本的顶部,执行以下操作:

from __future__ import division

我们不能通过将一个整数除以另一个而获得十进制值,否则总会以这种方式获得一个整数(结果被截断为整数)。我们至少需要一个值作为十进制数。

其他答案建议如何获取浮点值。尽管此wlil接近我们想要的,但它不是精确的:

>>> 0.4/100.
0.0040000000000000001

如果我们实际上想要一个十进制值,请执行以下操作:

>>> import decimal
>>> decimal.Decimal('4') / decimal.Decimal('100')
Decimal("0.04")

这将为我们提供一个对象,该对象正确知道以10为底的4/100为" 0.04"。浮点数实际上以2为底,即二进制而不是十进制。

我们可能还想看看Python的十进制软件包。这将提供不错的十进制结果。

>>> decimal.Decimal('4')/100
Decimal("0.04")