代码之家  ›  专栏  ›  技术社区  ›  Wirable2323

为什么带有python小数的floordiv(//)运算器向0取整,而不是向负无穷大取整?

  •  0
  • Wirable2323  · 技术社区  · 2 年前
    >>> import decimal
    >>> decimal.Decimal(-7) // 4
    Decimal('-1') # Result rounded towards 0.
    >>> -7 // 4
    -2  # Result rounded towards negative infinity.
    >>>
    

    为什么带有python小数点的floordiv运算符会向0取整,而不是像floordiv操作符对所有其他类型所做的那样向负无穷大取整?

    1 回复  |  直到 2 年前
        1
  •  4
  •   InSync    2 年前

    从…起 BPO-12005 (格式化我的):

    十进制模块所基于的规范要求存在语义为的“余数”运算 Decimal % 操作(即的结果 x % y 有的迹象 x ).然而,该规范没有说明规定的操作应该如何映射到语言构造。

    所以选择是(1)离开 % 对于 十进制的 对象未实现,并提供单独的“余数”方法,或(2)映射 % 十进制的 的余数运算,并接受之间的轻微不匹配 % 的语义 float 和Decimal。

    也许做出了错误的选择。但它现在就在那里,对我来说,值得一提的是,这并没有那么明显的错误 % 对于 十进制的 物体。

    Mark Dickinson (2011年5月5日)

    上面的帖子是关于 % ,但这也适用于 // .