When using the normal division
9999999999999999 / 2
returned value: 5000000000000000.0
and when using the floor division
9999999999999999 // 2
returned value: 4999999999999999
I am using python 3.8.1 can anyone explain this ? Thanks in advance
When using the normal division
9999999999999999 / 2
returned value: 5000000000000000.0
and when using the floor division
9999999999999999 // 2
returned value: 4999999999999999
I am using python 3.8.1 can anyone explain this ? Thanks in advance
The / operator on int operands returns a float. Assuming an IEEE 754 compatible system, a float has 53 bits of precision. Thus, it cannot exactly represent the quotient 4999999999999999.5, which would require 54 bits (10001110000110111100100110111111000000111111111111111.1). So this value gets rounded up to 5000000000000000.0.
The // operator on int operands returns an int. The Python 3 int type has unlimited range, so can represent 9999999999999999 exactly. Halving this number gives 4999999999999999 (with a discarded remainder of 1).