I am new to Python and I started studying the basics. I am a C++ guy so the // operator was something new. According with a book that I am reading:
>> 4/2
2.0
>> 2/4
0.5
>> 5//4
2
>> 2//4
0
The problem is that when I write 5//4 the result is 1,when I write 4/2 the result is 2 and not 2.0 and when I write 2/4 the result is 0 . I have to write `2.0/4.0' to have 0.5 as the result. Is these author's mistakes or am I doing something wrong?
I am using Python 2.7.4, [GCC 4.7.3] on linux2
In Python 2.x, the default division operator is "Classic division". This means that /, when used with integer operators will result in integer division similar to C++ or java [i.e. 4/3 = 1].
In Python 3.x, this is changed. There, / refers to "True division" [4/3 = 1.3333..], whereas // is used to request "Classic/Floor division".
If you want enable "True division" in Python 2.7, you can use from __future__ import division in your code.
Source: PEP 238
For example:
>>> 4/3
1
>>> 4//3
1
>>> from __future__ import division
>>> 4/3
1.3333333333333333
>>> 4//3
1
The difference occurs in case of Python 3.x .
In Python 3.0, 7 / 2 will return 3.5 and 7 // 2 will return 3. The operator / is floating point division, and the operator // is floor division or integer division.
But in case of Python 2.x there won't be any difference and the text is wrong I believe, here is the output I am getting.
Python 2.7.3 (default, Apr 10 2012, 23:31:26) [MSC v.1500 32 bit (Intel)] on
win32
Type "copyright", "credits" or "license()" for more information.
>>> 4/2
2
>>> 2/4
0
>>> 5//4
1
>>> 2//4
0
>>>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With