Здравствуйте, Аноним, Вы писали:
А>Может кто подскажет, что тут не так?
А>А>int main(int argc, char* argv[])
А>{
А> float fVal = 8.40;
А> int nVal = fVal*100;
А> printf("Hello World!\n fVal = %f, nVal = %i", fVal, nVal);
А> return 0;
А>}
А>
А>выводит: fVal = 8.400000, nVal = 839
А>если в fVal поставить любое другое число, то все работает нормально.
А>например, если fVal = 8.30, то nVal = 830; только 8.40 приводит к такому странному эфекту.
Да это просто округление при выводе. Посмотри на этот текст
int main(int argc, char* argv[])
{
float fVal = 8.40;
int nVal = fVal*10000000;
printf("fVal = %10.8f, nVal = %i\n", fVal, nVal);
cout << fVal << endl;
getch();
return 0;
}
Выводит
fVal = 8.39999962, nVal = 83999996
8.4
Понятно?