Konvertierung von double nach unsigned int

Stehe ich vor einem problem mit der Umwandlung der Wert von Double in int. Ich versuche, führen Sie den folgenden code :

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;
}

Umwandlung von double zu int zu löschen, die Dezimalstellen haben, aber integer-Teil bleiben sollte
wie es ist ?

Die Ausgabe die ich bekomme ist :
16000
15999

also warum ist die o/p hier anders ?
Dies geschieht nur auf fedora. Unter windows und Ubuntu funktioniert es einwandfrei. ( Beide Ausgaben sind 16000)

Ich Zwickte den obigen code, und erhielt die folgenden Ergebnisse :

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;

}

NEUEN AUSGABE ist
16000
16000
16000

  • Was bedeutet es Ausgabe? Und was ist Ihre erwartete Ausgabe? Ist das nicht das, was Sie bekommen : ideone.com/0eXhl
  • Ich weiß nicht wirklich sehen, hier eine Frage. Ist etwas schiefgegangen? Was ist das problem, das Sie konfrontiert sind? Ist der code nicht funktioniert wie man es erwarten würde?
  • Es ist nicht klar, was Ihre eigentliche problem für mich ist. Funktioniert das nicht, wie Sie es erwarten? Was tut Sie und was erwarten Sie, es zu tun?
  • Es scheint, verhält sich wie erwartet: ideone.com/VkTov 16000 gibt für beide Ausgänge.
  • Standard-Antwort für diese und viele andere ähnliche Missverständnisse über Gleitkomma-Arithmetik: docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html
  • Ich bekomme 15999 16000 und auch mit Embarcadero C++ Builder. Welchen compiler benutzt du?
  • <strike>Compiler-Implementierungen. GCC zeigt 1600 für alle Fälle. Demo 1 Demo 2</strike> Oh nur in fedora. Ich bin mir nicht sicher. Was für eine CPU und was für virtuelle Maschinen verwenden Sie?

InformationsquelleAutor Dexter | 2012-09-06
Schreibe einen Kommentar