Datenbank lädt inakkurate Daten

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Hallo,


    ich scripte derzeit an einem dynamischen Objekt System (Objekte lassen sich Ingame erstellen/editieren über "EditDynamicObject" und auch löschen).


    Nun habe ich das Problem, dass die Objekte, die aus der SQL DB geladen werden, sich leicht von denen unterscheiden, die abgespeichert wurden.


    Es scheint so, als ob diese Werte irgendwie automatisch gerundet werden. Ich habe bereits den DECIMAL Typ statt FLOAT verwendet, aber da gab es keinen Unterschied.


    Hier ist die Log.


    Hoffentlich hat jemand von euch eine Idee.

  • Normalerweise sollte Float aber richtig sein


    Kannst du die Tabellenstruktur einmal zeigen? Geht mit phpMyAdmin über den Button "Struktur" oder über die Kommandozeile mit DESCRIBE table_name;


    „Nicht das, was du nicht weißt, bringt dich in Schwierigkeiten, sondern dass, was du sicher zu wissen glaubst, obwohl es gar nicht wahr ist.“
    Mark Twain

    ---
    ICH BIN NUR HIER UM LEUTE ANZUSCHREIEN

    • Hilfreich

    MySQL :: MySQL 8.0 Reference Manual :: 11.1.4 Floating-Point Types (Approximate Value) - FLOAT, DOUBLE


    Du hast aktuell deine Spalten für die Koordinaten so eingestellt dass zwar 10 Zeichen insg. gespeichert werden können, aber dafür nur 0 Nachkommastellen. Wenn man sich rein exemplarisch ein Mappingobjekt anschaut,


    C
    CreateDynamicObject(6959,507.7510,-2303.0110,511.8220,0.0000,0.0000,0.0000, worldid , interiorid, -1,200.0,200.0);

    dann sieht man dass die Koordinaten insg. bis zu 8 Stellen lang sein können, aber dafür nur 4 Nachkomma stellen haben. Also würdest du in deinem Fall die betroffenen Spalten auf float(9,4) ändern um auch negative Werte erfassen zu können


    „Nicht das, was du nicht weißt, bringt dich in Schwierigkeiten, sondern dass, was du sicher zu wissen glaubst, obwohl es gar nicht wahr ist.“
    Mark Twain

    ---
    ICH BIN NUR HIER UM LEUTE ANZUSCHREIEN

  • https://dev.mysql.com/doc/refm…floating-point-types.html


    Du hast aktuell deine Spalten für die Koordinaten so eingestellt dass zwar 10 Zeichen insg. gespeichert werden können, aber dafür nur 0 Nachkommastellen. Wenn man sich rein exemplarisch ein Mappingobjekt anschaut,


    C
    CreateDynamicObject(6959,507.7510,-2303.0110,511.8220,0.0000,0.0000,0.0000, worldid , interiorid, -1,200.0,200.0);

    dann sieht man dass die Koordinaten insg. bis zu 8 Stellen lang sein können, aber dafür nur 4 Nachkomma stellen haben. Also würdest du in deinem Fall die betroffenen Spalten auf float(9,4) ändern um auch negative Werte erfassen zu können

    Konnte das Problem dadurch lösen, Danke :)