Nikita Ignatenkov тут все дело в округлениях. если по простому в первом случае вы приводите к int 93.9999999 а во втором 94.0000000001. если вам интересно, то есть объяснение на английском вот тут
static int Val3(){
float val = 0.94f;
return (int)((double)val*100);
}
На самом деле, подозрительно, что у вас работает строчка
float val=0.94;
У меня она пишет
Literal of type double cannot be implicitly converted to type 'float'; use an 'F' suffix to create a literal of this type
(компилятор VS 2013). Наверное, действительно разные настройки. Или разные языки.