konwersja z podwójnego na niepodpisany int
Mam problem z konwersją wartości z Double na int. Próbuję uruchomić następujący kod:
int main()
{
double val_d= 6.25e-05;
cout << (1/val_d) << endl;
unsigned int val_ui = (unsigned int ) (1/val_d);
cout << val_ui << endl;
}
konwersja z double na int może usunąć część dziesiętną, ale część całkowita powinna pozostać bez zmian?
Otrzymany wynik to: 16000 15999
więc dlaczego tutaj jest inaczej? Dzieje się tak tylko w Fedorze. Na Windows i Ubuntu działa dobrze. (Oba wyjścia to 16000)
Poprawiłem powyższy kod i otrzymałem następujące wyniki:
int main()
{
double val_d= 6.25e-05;
cout << (1/val_d) << endl;
double val_intermediate = (1/val_d) ;
cout << val_intermediate << endl;
unsigned int val_ui = (unsigned int ) val_intermediate;
cout << val_ui << endl;
}
NOWY WYNIK wynosi 16000 16000 16000