Perché la conversione da float a double cambia il valore?

Ho cercato di scoprire il motivo, ma non potevo. Qualcuno può aiutarmi?

Guarda il seguente esempio.

float f; f = 125.32f; System.out.println("value of f = " + f); double d = (double) 125.32f; System.out.println("value of d = " + d); 

Questo è l’output:

valore di f = 125,32

valore di d = 125,31999969482422