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

Posted

技术标签:

【中文标题】在 Python 中使用除法运算符时如何获得十进制值?【英文标题】:How do I get a decimal value when using the division operator in Python? 【发布时间】:2010-09-12 03:33:03 【问题描述】:

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

>>> 4 / 100
0

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

【问题讨论】:

【参考方案1】:

尝试 4.0/100

【讨论】:

【参考方案2】:

简单的路线 4 / 100.0

4.0 / 100

【讨论】:

【参考方案3】:

您需要告诉 Python 使用浮点值,而不是整数。您只需在输入中自己使用小数点即可:

>>> 4/100.0
0.040000000000000001

【讨论】:

【参考方案4】:

共有三个选项:

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

【讨论】:

还请添加python -Q new 命令行选项的可用性,以使您的答案更完整。 这给出了一个浮点值,而不是一个十进制值。请参阅 Glyph 的答案。 你也可以在源码中使用from __future__ import division 然而人们说 python 是一种很棒的数学编程语言...我不知道这里有什么更糟糕的地方,使用特殊的导入可能会改变行为,如果删除,或者在任何地方指定浮点操作.【参考方案5】:

将其中一项或两项设为浮点数,如下所示:

4.0/100.0

或者,打开 Python 3.0 中默认的功能“真正的除法”,它可以满足您的需求。在模块或脚本的顶部,执行:

from __future__ import division

【讨论】:

【参考方案6】:

你不能通过将一个整数除以另一个整数来得到一个十进制值,你总是会这样得到一个整数(结果被截断为整数)。您至少需要一个值才能成为十进制数。

【讨论】:

请注意,如果您使用 /,在 Python 3.0 中将不再是这种情况。【参考方案7】:

其他答案建议如何获取浮点值。虽然这将接近您想要的,但它并不准确:

>>> 0.4/100.
0.0040000000000000001

如果您确实想要 十进制 值,请执行以下操作:

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

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

【讨论】:

【参考方案8】:

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

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

【讨论】:

【参考方案9】:

这里我们给出了两种可能的情况

from __future__ import division

print(4/100)
print(4//100)

【讨论】:

对于python3,您不需要导入分割行只需使用打印语句对于python2您需要显式添加导入语句【参考方案10】:

像这样从未来的库中导入部门:

from__future__ import division

【讨论】:

请详细说明为什么这会解决原来的问题,也许这种方法有什么缺点。【参考方案11】:

在代码中添加以下函数及其回调。

# 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)

如有任何疑问,请在下方评论。

【讨论】:

【参考方案12】:

您也可以尝试在数字末尾添加“.0”。

4.0/100.0

【讨论】:

【参考方案13】:

它只是去掉小数点后的小数部分。 你试过了吗:4.0 / 100

【讨论】:

以上是关于在 Python 中使用除法运算符时如何获得十进制值?的主要内容,如果未能解决你的问题,请参考以下文章

python中的减法有问题

Python中整数运算除法,输出带浮点数

python函数整理

5.5 除法的运算过程

python3使除法结果为整数

汇编有符号除法运算