Convertir flotante al doble pierde precisión pero no a través de ToString
Tengo el siguiente código
float f = 0.3f;
double d1 = System.Convert.ToDouble(f);
double d2 = System.Convert.ToDouble(f.ToString());
Los resultados son equivalentes a:
d1 = 0.30000001192092896;
d2 = 0.3;
Tengo curiosidad por saber por qué esto es así.