adieren geht nicht

  • adieren geht nicht

    hallo,

    ich will, dass mit der linken maustaste eine variable erhöht wird und mit rechts erniedrigt.
    doch wenn ich das teste, dann kommt manchmal bei bestimmten zahlen eine ungerade zahl, wie zum beispiel:
    x ist 8.
    wenn ich draufklick ist sie dann 8.9999999998!

    ich hab es so gemacht: im left pressed event if (x<20) x = x - 1

    wenn jemand wüsste wie ich das lösen könnte, wäre ich sehr dankbar


  • thx für die schnelle antwort! ich werds probieren, wenn ich an den richtigen pc komme.
    weiß jemand, warum das so ist? das würde mich interessieren


    Weil Marc das so wolle...
    Aktuelles Projekt: Aufbau - Strategiespiel.
    Aktueller Entwicklungsschritt: Planung | Grundengine entwickeln.

    Wichtig ist nicht, besser zu sein als alle anderen.
    Wichtig ist, besser zu sein als du gestern warst.





  • Das liegt an der grundlegenden Speicherung von Zahlenwerten.
    Im Game Maker 6 wird dafür entweder Single oder Real48 genommen. Im Game Maker 7 mindestens Double, möglicherweise auch Extended.

    Zahlenwerte ohne Kommastelle können fast immer exakt abgebildet werden, und zwar bis +- 2147483648.
    Bei Kommawerten wird die Sache mit der Speicherung schwieriger, wo setzt die Kommastelle an, wie lang macht man den Nachkommabereich usw.? Nun könnte man für eine einzige Kommazahl elendig viel Speicher verwschwenden, aber das geschieht in der Informatik nicht.
    Kommazahlen werden als Potenzen abgespeichert, mit einer Basis und deren Exponenten. Bei dem Wert Single sind das 7 geltende Ziffern mit einem Exponenten im Bereich von -38 bis +38. Alles was damit nicht darstellbar ist, kann nur annäherungsweise abgespeichert werden. Nun ist 1 nicht wirklich 1, sondern hat in einer sehr späten Nachkommastelle bei dieser Darstellung eine Abweichung. Je nach Zahl ist die Abweichung immer weiter vorne im Nachkommabereich, und wenn man sowas summiert, summiert sich auch die Ungenauigkeit.

    Game Maker 7 erweitert einfach den abspeicherbaren Bereich auf mindestens 15 geltende Ziffern mit einem Exponenten von -308 bis +308. Das erhöht die Genauigkeit, löst aber das grundlegende Problem nicht.

    Es ist kein Problem des Game Makers sondern die Unfähigkeit des binären Systemes eine Kommazahl auf einem vordefinierten Bereich zu speichern. Der Game Maker 6 litt nur arg unter den Symptomen, da dort ein zu kleiner Datentyp verwendet worden ist und das Problem dadurch bei ganz einfachen Zahlen schon voll durchschlagen konnte.

    Gesteigert wird das beim GM auch noch dadurch, das es keine Integertypen gibt. Alle Zahlen werden als Kommazahl abgebildet, auch Zahlen die man direkt in den Quellcode schreibt. Da würde eine bessere Typisierung helfen.
    "Die Erde ist ein Irrenhaus. Dabei könnte das bis heute erreichte Wissen der Menschheit aus ihr ein Paradies machen. Dafür müsste die weltweite Gesellschaft allerdings zur Vernunft kommen."
    - Joseph Weizenbaum
  • Benutzer online 1

    1 Besucher