float a = ...
float b = ...
float c = (float)(((double)a) * ((double)b));

このコードは誤差を減らすためにやっているんですか?