See manual/variables. A var has 32 bits. Your code produces wrong results because you're exceeding the var precision. - Please only post engine bugs to the bug forum, not script bugs.
You can believe jcl if he says this is not a bug. What you see is a limitation of floating point numbers on computers. You should read the wikipedia article on the topic or any other article on the subject that might be easier to understand.
Floating point numbers cannot represent every possible value and therefore you will always receive an approx. value.
In my experience, and what they have read, it happens when you load with the numbers, but if a variable is not altered and is in range, would not have to have different values indicated. Read more about the subject, but this happened to me with any language. Thank