如何在Python中使用除法运算符获得小数值?

74 投票
13 回答
196957 浏览
提问于 2025-04-11 09:24

比如说,标准的除法符号 '/' 计算出来的结果会四舍五入到零:

>>> 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 的部分,感谢 ΤΖΩΤΖΙΟΥ

撰写回答