例如,标准除法符号“/”四舍五入为零:
>>> 4 / 100
0
但是,我希望它返回 0.04。我用什么?
有三个选项:
>>> 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
ΤZΩΤZΙΟΥ 的部分!
其他答案建议如何获取浮点值。虽然这将接近您想要的,但它并不准确:
>>> 0.4/100.
0.0040000000000000001
如果您实际上想要一个十进制值,请执行以下操作:
>>> import decimal
>>> decimal.Decimal('4') / decimal.Decimal('100')
Decimal("0.04")
这将为您提供一个正确知道以10 为底的 4 / 100是“0.04”的对象。浮点数实际上是以 2 为底的,即二进制,而不是十进制。
将其中一项或两项设为浮点数,如下所示:
4.0/100.0
或者,打开 Python 3.0 中默认的功能“真正的除法”,它可以满足您的需求。在模块或脚本的顶部,执行以下操作:
from __future__ import division
您可能还想查看 Python 的十进制包。这将提供很好的十进制结果。
>>> decimal.Decimal('4')/100
Decimal("0.04")
您需要告诉 Python 使用浮点值,而不是整数。您可以通过在输入中自己使用小数点来做到这一点:
>>> 4/100.0
0.040000000000000001
一条简单的路线 4 / 100.0
或者
4.0 / 100
在这里,我们有以下两种可能的情况
from __future__ import division
print(4/100)
print(4//100)
尝试 4.0/100
您不能通过将一个整数除以另一个整数来获得十进制值,您总是会以这种方式获得一个整数(结果被截断为整数)。您至少需要一个值才能成为十进制数。
在代码中添加以下函数及其回调。
# Starting of the function
def divide(number_one, number_two, decimal_place = 4):
quotient = number_one/number_two
remainder = number_one % number_two
if remainder != 0:
quotient_str = str(quotient)
for loop in range(0, decimal_place):
if loop == 0:
quotient_str += "."
surplus_quotient = (remainder * 10) / number_two
quotient_str += str(surplus_quotient)
remainder = (remainder * 10) % number_two
if remainder == 0:
break
return float(quotient_str)
else:
return quotient
#Ending of the function
# Calling back the above function
# Structure : divide(<divident>, <divisor>, <decimal place(optional)>)
divide(1, 7, 10) # Output : 0.1428571428
# OR
divide(1, 7) # Output : 0.1428
该功能基于“欧几里得除法算法”工作。如果您不想在项目中导入任何外部头文件,此功能非常有用。
语法:divide([divident], [divisor], [decimal place(optional))
代码:divide(1, 7, 10)
或divide(1, 7)
如有任何疑问,请在下方评论。
您也可以尝试在数字末尾添加“.0”。
4.0/100.0
它只是去掉小数点后的小数部分。你试过吗:4.0 / 100
从未来的库中导入部门,如下所示:
from__future__ import division