+ 3

Why does 1000/1.6 and 1000//1.6 give a different answer?

If 1.6 goes into 1000 evenly 625 times, why does the floor division equal 624.0? Can someone explain please? https://code.sololearn.com/c1Ov8fuYB5q0/?ref=app

6th Dec 2021, 7:11 PM
Matthew McCaughey
Matthew McCaughey - avatar
4 RĂ©ponses
+ 8
Hi! It’s division vs floor division. It’s two different operators. Division always return a float. Floor division return an integer if both operands are integers, otherwise a float. The nature of floats makes them more difficult to handle comparing with integers and calculation with them gives results that’s not always one hundred percent mathematically accurate. Python gives that 1000 // 1.6 = 624.0 but 1000 // 1.599999999999999 = 625.0 You can take back what you’ve lost by using the following formula: k = d * (k // d) + (k % d), where k = 1000 and d = 1.6. 1000 = = 1.6 * (1000 // 1.6) + (1000 % 1.6) = = (1.6 * 624.0) + (1000 % 1.6) = = (998.4000000000001 + 1.5999999999999446) = = 1000.0 So what you miss above, is in the term (1000 % 1.6).
6th Dec 2021, 7:16 PM
Per Bratthammar
Per Bratthammar - avatar
+ 4
1.6 cannot be exactly rappresented as a float. The nearest rappresentation is a slightly higher number, so it doesn't evenly divide 1000
6th Dec 2021, 7:18 PM
Angelo
Angelo - avatar
+ 2
NEZ I understood the difference between the two. My issue was that 1.6 technically goes into 1000 evenly, 625 times. So it was odd to me that the floor division equated to 624.0.
7th Dec 2021, 6:30 AM
Matthew McCaughey
Matthew McCaughey - avatar
- 3
Go to the course and learn the difference between / and //
7th Dec 2021, 3:09 AM
NEZ
NEZ - avatar