Errore in virgola mobile nella rappresentazione?

quando faccio questa moltiplicazione

0,94 * 8700

l’output è

8177,999999999999

ma avrebbe dovuto essere

8178

sto usando java, ma non penso che questo errore sia legato a un particolare linguaggio di programmazione, ora la mia domanda è … perché è successo ??
e quali altri numeri (proprio come un esempio) causano lo stesso errore?