The problem is that there is no binary representation of 0.05, so you'll always get slight differences in the 3rd digit after the decimal.

For what reason do you need exact multiples of 0.05? If you want exact values you normally use integers.

You can use float and double in lite-C, which will be more precise than var, but you still won't get exact multiples of 0.05. The only language that I know of that supports unlimited precision is LISP.