如何在Python中使用除法运算符获得小数值?
比如说,标准的除法符号 '/' 计算出来的结果会四舍五入到零:
>>> 4 / 100
0
但是,我想要它返回 0.04。那我该用什么呢?
13 个回答
8
把其中一个或两个数变成浮点数,像这样:
4.0/100.0
或者,你可以开启一个在Python 3.0中默认启用的功能,叫做“真除法”,这样就能得到你想要的结果。在你的模块或脚本的开头,写上:
from __future__ import division
27
其他回答提供了如何获取浮点值的方法。虽然这样做会接近你想要的结果,但并不完全准确:
>>> 0.4/100.
0.0040000000000000001
如果你真的想要一个十进制值,可以这样做:
>>> import decimal
>>> decimal.Decimal('4') / decimal.Decimal('100')
Decimal("0.04")
这样做会给你一个对象,它能正确地理解4 / 100在十进制下是“0.04”。浮点数实际上是以2为底,也就是二进制,而不是十进制。
148
这里有三个选择:
>>> 4 / float(100)
0.04
>>> 4 / 100.0
0.04
这个选择的行为和C、C++、Java等语言是一样的,或者
>>> from __future__ import division
>>> 4 / 100
0.04
你也可以通过给Python解释器传递参数 -Qnew
来激活这种行为:
$ python -Qnew
>>> 4 / 100
0.04
第二个选项将在Python 3.0中成为默认设置。如果你想使用旧的整数除法,你需要使用 //
运算符。
编辑:增加了关于 -Qnew
的部分,感谢 ΤΖΩΤΖΙΟΥ!