Hello !
Representing numbers is a general problem !
When you store a number as double (64-Bit) you can only represent 2^64 different numbers.
But if you imagine, that the amount of numbers is infinite, you see that you cannot display ALL possible numbers.
-> not all numbers are available, only a 'few' (2^64)
When a number is not available, then the closest to it will be used.
Example:
5279 is not possible -> 5278.999999... is used.
You see, a computer is not PERFECT !
Calculations on computer are only a approximation !
This often causes rounding errors, especially when you calculate big numbers.