What is the difference between '/' and '//' when used for division?

后端 未结 13 2133
孤独总比滥情好
孤独总比滥情好 2020-11-21 07:23

Is there a benefit to using one over the other? In Python 2, they both seem to return the same results:

>>> 6/3
2
>>> 6//3
2
相关标签:
13条回答
  • 2020-11-21 07:48

    5.0//2 results in 2.0, and not 2 because the return type of the return value from // operator follows python coercion (type casting) rules.

    Python promotes conversion of lower datatype (integer) to higher data type (float) to avoid data loss.

    0 讨论(0)
  • 2020-11-21 07:52

    // implements "floor division", regardless of your type. So 1.0/2.0 will give 0.5, but both 1/2, 1//2 and 1.0//2.0 will give 0.

    See https://docs.python.org/whatsnew/2.2.html#pep-238-changing-the-division-operator for details

    0 讨论(0)
  • 2020-11-21 07:54

    As everyone has already answered, // is floor division.

    Why this is important is that // is unambiguously floor division, in all Python versions from 2.2, including Python 3.x versions.

    The behavior of / can change depending on:

    • Active __future__ import or not (module-local)
    • Python command line option, either -Q old or -Q new
    0 讨论(0)
  • 2020-11-21 07:55

    Python 2.x Clarification:

    To clarify for the Python 2.x line, / is neither floor division nor true division. The current accepted answer is not clear on this.

    / is floor division when both args are int, but is true division when either or both of the args are float.

    The above tells more truth, and is more clear than the 2nd paragraph in the accepted answer.

    0 讨论(0)
  • 2020-11-21 07:55

    / --> Floating point division

    // --> Floor division

    Lets see some examples in both python 2.7 and in Python 3.5.

    Python 2.7.10 vs. Python 3.5

    print (2/3)  ----> 0                   Python 2.7
    print (2/3)  ----> 0.6666666666666666  Python 3.5
    

    Python 2.7.10 vs. Python 3.5

      print (4/2)  ----> 2         Python 2.7
      print (4/2)  ----> 2.0       Python 3.5
    

    Now if you want to have (in python 2.7) same output as in python 3.5, you can do the following:

    Python 2.7.10

    from __future__ import division
    print (2/3)  ----> 0.6666666666666666   #Python 2.7
    print (4/2)  ----> 2.0                  #Python 2.7
    

    Where as there is no differece between Floor division in both python 2.7 and in Python 3.5

    138.93//3 ---> 46.0        #Python 2.7
    138.93//3 ---> 46.0        #Python 3.5
    4//3      ---> 1           #Python 2.7
    4//3      ---> 1           #Python 3.5
    
    0 讨论(0)
  • 2020-11-21 07:57

    Python 2.7 and other upcoming version of python:

    • Division (/)

    Divides left hand operand by right hand operand

    Example: 4 / 2 = 2

    • Floor Division (//)

    The division of operands where the result is the quotient in which the digits after the decimal point are removed. But if one of the operands is negative, the result is floored, i.e., rounded away from zero (towards negative infinity):

    Examples: 9//2 = 4 and 9.0//2.0 = 4.0, -11//3 = -4, -11.0//3 = -4.0

    Both / Division and // floor division operator are operating in similar fashion.

    0 讨论(0)
提交回复
热议问题