Anche col double, per particolari valori, avresti questo "problema".
Non dipende dal linguaggio o dal compilatore ma dalla rappresentazione del valore decimale in virgola mobile in binario.
Sono errori di approssimazione inevitabili (potresti leggere qualche documentazione sull'argomento
http://www.ce.uniroma2.it/courses/ac05/lucidi/Floating_2pp.pdf ).
Pensa al fatto che il numero di bit è comunque limitato e quindi non tutti i valori sono esattamente rappresentabili.
Per comprendere, anche in decimale, se vuoi rappresentare il valore 1/3 non puoi senza approssimarlo.
Ad esempio, il valore 0,1 espresso in binario non è rappresentabile precisamente in quanto periodico.
Se non devi fare calcoli scientifici di alta precisione, ti basta usare un double. Avrai errori molto piccoli.