Здравствуйте, LaptevVV, Вы писали:
LVV>Здравствуйте, Аноним, Вы писали:
А>>Может кто подскажет, что тут не так?
А>>А>>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 приводит к такому странному эфекту.
LVV>Да это просто округление при выводе. Посмотри на этот текст
LVV>LVV>int main(int argc, char* argv[])
LVV>{
LVV> float fVal = 8.40;
LVV> int nVal = fVal*10000000;
LVV> printf("fVal = %10.8f, nVal = %i\n", fVal, nVal);
LVV> cout << fVal << endl;
LVV> getch();
LVV> return 0;
LVV>}
LVV>
LVV>Выводит
LVV>LVV>fVal = 8.39999962, nVal = 83999996
LVV>8.4
LVV>
LVV>Понятно?
не понял, а при чем тут округление?? в моем примере fVal выводится нормально, без округления! да и потом 8,40 можно округлить до 8, но никак не до 8,39...
и почему тогда никакие другие значения fVal так хитро не округляются? почему только 8,40