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

questionAnswers(3)

yourAnswerToTheQuestion