Thank You Frankie I expected an other solution, but with your post it is clear I must change something. Perhaps I could multiply by 100 so there will be only five numbers after the decimal point.

I don't think it will solve your problem.

Multiplying by 100 moves the decimal point, but don't change the total number of digit figures of the number, ergo the whole digits that make up your number still can't be enclosed in the 54 bits (53 real plus an implicit bit), and can't be represented without approximations.

When approximations comes in all the issues, explained in the paper reported by Pelle, start to play.

In very plain words: if you need high precision calculations without any tricky approximation, be sure that all your numbers, removing the decimal point, are less than 2^54-1.

In your case you can find convenient to work with

**quadruple precision float**, standard "

**IEEE 754 2008 binary128**", that use 128bits.

Many free libraries are available, among them you can try

~~QPFloat (C++)~~ this in C.