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

Ray*_*ega 62 python math syntax operators python-2.7

例如,标准除法符号'/'舍入为零:

>>> 4 / 100
0
Run Code Online (Sandbox Code Playgroud)

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

Tor*_*rek 131

有三种选择:

>>> 4 / float(100)
0.04
>>> 4 / 100.0
0.04
Run Code Online (Sandbox Code Playgroud)

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

>>> from __future__ import division
>>> 4 / 100
0.04
Run Code Online (Sandbox Code Playgroud)

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

$ python -Qnew
>>> 4 / 100
0.04
Run Code Online (Sandbox Code Playgroud)

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

编辑:添加部分-Qnew,感谢ΤΖΩΤΖΙΟΥ!

  • 还请添加“python -Q new”命令行选项的可用性,以使您的答案更完整。 (2认同)

Gly*_*yph 24

其他答案建议如何获得浮点值.虽然这将接近你想要的,但它不会是准确的:

>>> 0.4/100.
0.0040000000000000001
Run Code Online (Sandbox Code Playgroud)

如果你真的想要一个十进制值,这样做:

>>> import decimal
>>> decimal.Decimal('4') / decimal.Decimal('100')
Decimal("0.04")
Run Code Online (Sandbox Code Playgroud)

这将为您提供一个正确知道基数10中的4/100为"0.04"的对象.浮点数实际上是基数2,即二进制,而不是十进制.


Tho*_*ers 7

使一个或两个术语成为浮点数,如下所示:

4.0/100.0
Run Code Online (Sandbox Code Playgroud)

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

from __future__ import division
Run Code Online (Sandbox Code Playgroud)


S.L*_*ott 5

您可能还想查看 Python 的十进制包。这将提供很好的十进制结果。

>>> decimal.Decimal('4')/100
Decimal("0.04")
Run Code Online (Sandbox Code Playgroud)