【问题标题】:Python - Divide only worked when used floating point for divisorPython - 除法仅在使用浮点除数时才有效
【发布时间】:2015-12-29 22:16:08
【问题描述】:

为什么我的代码只有在将除数变为浮点数时才有效?

a = 50/1000.0*100

当我执行以下操作时,它返回一个 0。

a = 50/1000*100

【问题讨论】:

标签: python floating-point semantics integer-division


【解决方案1】:

当两个操作数在 Python 2 中都是整数时,a/ba//b 相同,这意味着你得到整数除法。 50 / 1000 在这种情况下为 0(余数为 50,从 divmod(50, 1000) 的返回值可以看出)。

【讨论】:

    【解决方案2】:

    如果你使用 python 2.X 上面的结果来了 如果使用 python 3.x 结果是

    Python 3.4.3 (default, Jul 28 2015, 18:24:59) 
    [GCC 4.8.4] on linux
    >>> a = 50/1000*100
    >>> a
    5.0
    >>> a = 50/1000.0*100
    >>> a
    5.0
    >>> 
    

    【讨论】:

      【解决方案3】:

      50/1000 在 python 2.x 中为 0,因为整数除法假定您需要整数结果。如果您将分子或分母转换为浮点数,您将获得正确的行为。或者,您可以使用

      from __future__ import division

      获取 python 3.x 语义。

      【讨论】:

        猜你喜欢
        • 2016-06-02
        • 2015-09-27
        • 2012-01-08
        • 1970-01-01
        • 2011-05-06
        • 2022-01-05
        • 2018-04-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多