Wertebereich von Variablen

  • Wertebereich von Variablen

    Weiß jemand in welchem Bereich real Variablen Werte annehmen können, also wie groß bzw. wie klein dürfen die Zahlen sein damit sie noch in einer Variable korrekt gespeichert werden. Und was ist wenn man einer Variable einen Wert außerhalb dieses Bereichs zuweist?
    Ich denk doch mal nicht, dass die Zahlen unendlich groß seien dürfen.
    Mich interessiert das, weil daran eventuell der Fehler in meinem Skript liegt.

    Danke schonmal.
  • ich glaube wohl kaum das du in einem game eine zahl mit ca. 200 nullen hast^^
    10000000000000000000...(200 nullen später)...000000000000000000
    :P :P :P

    wenn du ne zu hohe zahl hast zeigt er immer E62 oder so an
    bei einer viiiiiiiiiiiiiiiiel zu hohen zahl zeigt er nur INF oder sowas und garkeine zahl mehr

    (ich weiß das nur weil ich gerade so ein testprogramm geschrieben habe wo immer eine null dranngehängt wird^^)
    Die Schönheit liegt im Auge des Betrachters :D

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Andyworld ()

  • OK, danke erstmal für die Antworten.

    Also sooo große zahlen sinds dann auch wieder nicht. Die haben nur max. 10 Stellen.
    Aber so langsam dreh ich durch. Ich glaub ich kann nicht mehr rechnen.
    Ich hab mal ein example angehängt.
    Dort werden ganz simpel 4 Zahlen addiert. Sollte kein großes Problem sein, hab ich mir auch gedacht.
    als Ergebniss kommt beim GM raus 7909090304. Könnte ihr ausprobieren, einfach example ausführen.
    Aber ich habs tausend mal nachgerechnet. Da kommt eindeutig 7909090520 raus.
    Also entweder kann ich nicht rechnen oder der GM hat nen Fehler.

    Bitte helft mir!
    Dateien
    • fehler.rar

      (1,59 kB, 102 mal heruntergeladen, zuletzt: )
  • also erstens:
    ich kann dich beruhigen, du machst keinen denkfehler :D

    zweitens:
    Ich hab absolut keine ahnung was der gm da macht...
    habs auch mehrmals nachgerechnet
    "Leben. Erzähl' mir bloß nichts vom Leben."
  • Könnte schon sein dass das was damit zu tuen hat. Aber es geht dort ja mehr um Rundungsfehler.
    Bei meinem Beispiel werden ja nur 4 zahlen addiert. Da ist nicht mal Division drin. Dazu kommt dass die Zahlen ja noch nicht mal Nachkommastellen haben, auch beim Ergebnis nicht.

    Hab grad mal jede der 4 Zahlen um 1 oder 2 geändert: das Ergebnis bleibt gleich. ?(
  • Oo schreib mal hinter jede zahl 3 Nullen Oo da kommt ein käse raus
    a = 1732584193000;
    b = 2562383102000;
    c = 32865000
    d = 3614090360000;

    und alles addiert gibt dann:
    7909090525184

    Oo ?(
    "Leben. Erzähl' mir bloß nichts vom Leben."
  • vielleicht mit kleineren zahlen rechnen und wenn du die zahlen ausgibst einfach paar nullen drannschreiben

    z.b. a=4,6

    bei der ausgabe
    draw_text(x,y,string(a*10))
    dann sollte er 46 ausgeben

    ich hoffe das es so klappt :(
    Die Schönheit liegt im Auge des Betrachters :D
  • Original von Bl@ckSp@rk
    Da das ja offensichtlich ein Bug ist werd ich das mal schnellstmöglich Mark berichten. Zur Zeit nimmt der aber keine Bugreports an steht auf seiner Seite.

    Wenn ich nur wüsste ob und wie man diesen Bug irgendwie umgehen kann.


    Da es auch im GM7 vorkommt, melde es als GM7 Bug an beta@gamemaker.nl
    "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
  • @Andyworld
    Das klappt leider nicht, hab ich schon probiert. Das kommt im Endeffekt aufs gleiche Ergebniss.

    Hab mir schon überlegt bei der Addition von 2 Zahlen die Erste zu der Zweiten schrittweise du addieren.
    Also immer meinetwegen so 1000 bis die 2. Zahl komplett hinzuaddiert wurde.
    Das ist mir aber erstens zu dämlich ne extra Funktion für die Addition zu schreiben und zweitens auch viel zurechenintensiv.
    Es will mir einfach keine gute Möglichkeit einfallen. Ich denke mal es wäre möglich das mit einer DLL zu machen, also einfach ne Funktion mit zwei Parametern die deren Summe zurück gibt. Wer Ahnung von DLLs hat kann ja mal bitte schreiben ob das ginge und ob das dann vor allem richtig rechnen würde.

    Wenn dieses Problem zu dem Fehler mit den Ungenauigkeiten zählt, dann wird dieser Bug wohl in naher Zukunft auch nicht behoben, denn laut Mark hat er selber keine Ahnung woran das liegt.
  • Der Fehler tritt jedenfalls bei Zahlen, die mehr als 24 Bit brauchen, auf. Und das bei natürlichen und bei Kommazahlen, daher kommt auch diese übelste Ungenauigkeit bei Nachkommastellen. Ich weiß aber nicht, warum Mark das so vernachlässigt und keine genaueren Untersuchungen macht. Da muss irgendwas an einer wichtigen Stelle vergurkt sein.

    Es wurde aber mal ein System gebastelt, um genauer Zahlen zu berechnen, ist hier zu finden: forums.gamemaker.nl/index.php?showtopic=150474&hl=
    Hat den Nachteil, das es eben komplizierter ist als direkt Matheeingaben zu machen.

    Edit: Ich hab mal in der GMC gesucht, scheinbar nutzt Game Maker den Datentyp Single für alle Zahlen. Der ist 32 bit groß und folgendermaßen aufgeteilt:
    1 bit für das Vorzeichen
    8 für den Exponenten
    23 für die Genauigkeit

    Die Zahlen werden also in eine Zweierpotenz plus die zu addierenden Ziffern gespeichert. 13 wäre beispielsweise 3 und 5. D.h. 2³+5=13.
    Braucht nun eine Zahl mehr Genauigkeitsziffern, als die 23 Bit hergeben, ist Sense und Game Maker rundet das auf die nächsten speicherbaren Exponenten plus Genauigkeitsziffern. Diese Eigenartige Speicherweise ist auch die Ursache der Nachkommaungenauigkeit und der Nullstellen beim Speichern von Zahlen in Ini Dateien, irgendwas läuft beim Erzeugen oder Auslesen der Zahl schief.
    "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
  • Grund zur Freude!

    Auf gamemaker.nl/beta.html stehen nun einige Verbesserungen, im am GM 7 seit der Beta vorgenommen wurden. Unter anderem
    Corrected the bug with limited real precision. Should also solve problems with functions dealing with the date and time.

    Das heißt, dass die Zahlen in den kommenden Versionen endlich mal wieder genauer sind :)
    "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
  • Heist das dann auch, dass man Werte beim Abspeichern in .ini-Dateien vorher nicht mehr in Strings umwandeln muss? =3
    Hier werden sie geholfen:
    [Regeln] [GML] [Hilfe] [Suche] [Posten] [Duden.de]
    [Wenn das alles nicht mehr hilft] [Dunning-Kruger]


    "Die Vernunft sollte Autorität definieren; nicht umgekehrt!"
    "Selber denken regt das Gehirn an."
    - Niffel f.k.a. Kilik
  • Benutzer online 2

    2 Besucher