Re[2]: магическое число??
От: Аноним  
Дата: 31.08.03 10:08
Оценка:
Здравствуйте, 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
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.