Die Umwandlung von double in int liefert andere Ergebnisse als erwartet



  • Guten Tag

    Ich habe den Fall dass ich Distanzen(mm) in Bildschirmkoordinaten umrechnen will

    // m_stMessdaten.cpMesspunkt1.y -> double
    // view.dRandUnten -> double
    // m_stMessdaten.dUmrechnungsfaktor -> double
    // cRect.Width() -> int -> CRect
    // cPoint.y -> long -> CPoint
    cPoint.y = cRect.Width() - int((m_stMessdaten.cpMesspunkt1.y + view.dRandUnten )*m_stMessdaten.dUmrechnungsfaktor);
    

    Komischerweise bekomme ich folgende Rechnung:
    423 = 765 - int(755.00000000)

    Was habe ich da schon wieder falsch gemacht?
    Und wie kann ich diesen Fehler beheben?



  • Nachtrag:
    Es werden keine Warnungen oder Fehler ausgegeben.

    Ich verwende Visual Studio 2005, das Betriebssystem ist Win7 64Bit und das Ganze wird innerhalb OnPaint aufgerufen.



  • Nachdem ich den 2. Beitrag ist mir der Fehler aufgefallen.

    Wenn Mann die Höhe des Anzeigebereichs zum Rechnen verwendet und nicht die Breite kommt sogar das richtige Ergebnis heraus.

    Entschuldigt mich vielmals für die Stöhrung.



  • Also ich erhalte 10 als Ergebnis.

    IDE One

    Wie sind denn die exakten Werte zum Zeitpunkt der Berechnung (auf deine ganze Formel bezogen)?



  • In diesem Fall war es der Fehler 500 (500mm vor dem Bildschirm.)

    Ich hatte die Rechteck-Breite in die Formel eingetragen wobei die Rechteckhöhe benötigt worden währe.
    Wenn man nun beim Debugen die Rechteckhöhe beobachtet, wundert man sich eben warum da falsch gerechnet wird.

    Nachdem ich den Fehler behoben habe, hat alles wunderbar funktioniert.


Anmelden zum Antworten