kostenloser Webspace werbefrei: lima-city


Rechenfehler in C#

lima-cityForumProgrammiersprachenProgrammieren mit .NET & Mono

  1. Autor dieses Themas

    primenic

    primenic hat kostenlosen Webspace.

    Hallo,
    ich möchte den Mittelpunkt eines Rectangle berechnen das sieht bei mir etwa so aus:

    //oDestRect.Location.X ist 460
    //oDestRect.Location.Y ist 219
    //oDestRect.Width ist 369
    //oDestRect.Height ist 88
    new Vector2((float)(oDestRect.Location.X + (oDestRect.Width / 2.0f)), (float)(oDestRect.Location.Y + (oDestRect.Height / 2)))


    Bei der ersten Rechnung kommt 644.5 und bei der zweiten 263. Wenn man nun aber einen Taschenrechner nimmt und nachrechnet kommt was anderes raus :biggrin: (mit dem Taschenrechner das Richtige)

    Hattet ihr schonmal ein ähnliches Problem? - Wie kann man das beheben?

    Danke schonmal
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. also nach meinen berechnungen (x + breite/2 und y+höhe/2), und auch so wie die formel dasteht kommt als Mittelpunkt (644.5 | 263) heraus

    ich denke, die variablen haben einfach nicht die richtigen werte.

    mfg
  4. Autor dieses Themas

    primenic

    primenic hat kostenlosen Webspace.

    Komisch ist nur, dass der selbe Funktionsaufruf in einem anderen Programm (die selben Variablenwerte) ein anderes, richtiges, Ergebnis hervorruft.
  5. Dann können nicht dieselben Werte drinnen stehen, sonst würde dein Computer ja falsch rechnen ;-)
    Mit einem Debug.Assert oder ähnlichen kannst du deine Vermutung ja leicht prüfen und im Bedarfsfall eine Fehlermeldung werfen.
  6. Dürfte ich erfahren, was deiner Meinung nach die richtige Lösung ist?
    Ansonsten ist debugging tatsächlich eine kluge Idee.

    Ich denke allerdings, dass du dir da einen narren an einem Logikfehler gefressen hast, der nicht in deinem Computer, sondern deinem hirn steckt.
  7. Autor dieses Themas

    primenic

    primenic hat kostenlosen Webspace.

    Dann können nicht dieselben Werte drinnen stehen

    Ansonsten ist debugging tatsächlich eine kluge Idee.


    Hab die Wete vom Debugging. Und den "Fehler" hab ich auch gefunden. Ein anderer Thread hat immer kurz vor der Rechnung auf die Variable zugegriffen und den Wert verändert. - Das zeigt mal wieder, dass man nicht ohne lock() Anweisung arbeiten sollte :wink:
  8. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!