【问题标题】:Two forward slashes in PythonPython中的两个正斜杠
【发布时间】:2013-01-04 20:31:00
【问题描述】:

我从radix sort 看到了这个代码示例:

def getDigit(num, base, digit_num):
    # pulls the selected digit
    return (num // base ** digit_num) % base

// 在 Python 中的作用是什么?

【问题讨论】:

标签: python floor-division


【解决方案1】:

Python3 支持两种除法,浮点(/)和整数(//)。

浮点数:45/2 = 22.5

整数:45//2 = 22

【讨论】:

  • 以上答案涵盖了您的所有观点。此外,您关于“返回最接近的整数”的观点是错误的,2.99//1 == 2.0
  • 是的,感谢您的观察 - 已更新
【解决方案2】:

// 是楼层除法运算符。它生成其操作数的商的底数,而不对整数操作数进行浮点舍入。这有时也称为整数除法,尽管您可以将它与浮点数一起使用,因为默认情况下使用 / 将整数除法。

在 Python 3 中,普通的/ 除法运算符会返回浮点值,即使两个操作数都是整数,因此需要使用不同的运算符进行下除法。这与 Python 2 不同,在 Python 2 中,/ 如果两个操作数都是整数,则执行下限除法,如果至少有一个操作数是浮点值,则执行浮点除法。

// 运算符首次引入是为了在 Python 2.2 中实现前向兼容性,当时决定 Python 3 应该具有这种新功能。再加上通过from __future__ import division(也在 Python 2.2 中引入)启用 Python 3 行为的能力,这使您能够在 Python 2 中编写与 Python 3 兼容的代码。

【讨论】:

  • 添加到@DSM 的评论中——// 在 python2.x 中也表示整数除法。如果你想进行整数除法,你应该使用// 而不是/,不管你使用的是什么版本的python。
  • 它向负无穷(即比率的下限)舍入。对于负数,它与 C 中的整数除法不同,它向零舍入。 python-history.blogspot.com/2010/08/…
【解决方案3】:

你可以试试:

In []: 5/2
Out[]: 2

In []: 5.0/2
Out[]: 2.5

In []: 5.0//2
Out[]: 2.0

这应该是不言自明的。

(这是在 Python 2.7 中。)

【讨论】:

  • -1:解决问题的一种方法是反复试验。另一种是通过询问。
  • 回答问题的一种方法是直接给出答案,另一种方法是指出方向。顺便说一句,我都做了。
  • 我只是想给你解释一下反对票和一些反馈的人。基于您的答案为-1,而接受为+13...我认为很多人都同意您实际上两者都没有。 (直接或方向)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-12
  • 1970-01-01
  • 2023-03-16
  • 2014-09-28
  • 1970-01-01
  • 2011-05-16
相关资源
最近更新 更多