1 == 1.0 ??



  • Servs zusammen,

    bin grad über diesen Code Schnippsel gestolpert,

    double x = 1.0 / 10.0;
     double y = x * 10.0;
     if (y != 1.0)
       std::cout << "surprise: " << y << " != 1\n";
    

    hab ihn compiliert und als Ergebniss nichts erhalten.
    Das hat mich etwas irritiert.
    Laut Compiler bekommt meine Variable y den Wert 1 übergeben, und nun sollte doch die If Anweisung wahr sein und der Compiler sollte mir doch die Ausgabe ausgeben, was er nicht macht.
    Mir kommt es so vor, als wenn der Compiler die Binärdarstellung der Zahlen vergleicht und nicht die Zahlen selbst. Aber wie vergleiche ich dann, falls ich es mal brauchen sollte, eine Ganzzahl mit einer Kommazahl ?
    Ich weiß ihr könnt mich da aufklären 😉

    Xecutor



  • Was irritiert dich daran ? in y steht doch 1 ....



  • != false
    == true



  • Aah damn it, ich hätt mir doch noch etwas mehr Gedanken über diesen Code machen sollen 🙄
    1 bleibt 1, egal ob 1.0 oder 1.00000 da steht - mir hat die Darstellung wohl ein Strich durch die Rechnung gemacht. Ich hab die Darstellung und nicht die Werte gedanklich vergliechen, deswegen hat mich das Ergebnis etwas vewirrt - wenn es früh am morgen gewesen wäre, könnte man es als Entschuldigung geltend machen aber gegen Mittag *schäm*

    Xecutor


Anmelden zum Antworten