Vector3 in MySQL Datenbank abspeichern

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
  • Guten Abend,


    ich versuche seit einiger Zeit einen Vector3 in meiner MySQL Datenbank abzuspeichern. Ich wollte nun einfach den Vector3 in ein String formatieren und diesen dann abspeichern.
    Jedoch trennt er die Nachkommastelle ebenfalls mit einem Komma und nicht wie ich vermutet hatte mit einem Punkt. Dadurch entstehen solche Einträge. -232,7939,619,8193,2857,028


    Jemand eine Idee wie ich den Char-Split ändern kann oder gar ne effizientere Idee fürs abspeichern des Vectors?


    Grüße
    PrideGame

    - heftig abhängig von Karli Kugelblitz Choco Drinks

  • Hast du vielleicht bei den Datenbank eintrag was Falsch gemacht?
    Eigentlich Speichert er bei Float auf die Komma Zahlen mit.


    Magst mir Zeigen wie ein Float erstellen lässt?


    MfG.
    Aaron!

    Die Missglückte Persönlichkeit, Ciao!

  • Korrekt er würde es normalerweise mitspeichern, jedoch wenn ich mir die Position hole unterteilt er diese Nachkommastelle warum auch immer mit einem Komma, wenn er jetzt noch die anderen Positionen abspeichern soll dann macht er eben sowas draus. -232,7939,619,8193,2857,028

    - heftig abhängig von Karli Kugelblitz Choco Drinks

  • Hier hole ich mir beim Speichern die Positionen:
    string pos = player.position.X + "," + player.position.Y + "," + player.position.Z;


    Wodurch dann schon dieser Kauderwelsch entsteht:
    -232,7939,619,8193,2857,028

    - heftig abhängig von Karli Kugelblitz Choco Drinks

  • Das liegt vermutlich an deinen Lokalen Spracheinstellungen.e Ist aber auch egal, mach einfach


    string pos = player.position.X + "|" + player.position.Y + "|" + player.position.Z; und splitte dann mit | beim auslesen.

  • Stop, bedeutet das würde ich mein Visual Studio auf Englisch stellen, trennt er die Kommastelle mit einem Punkt?

    Ich versuch einfach das Komma zu einem Punkt zu replacen.

    - heftig abhängig von Karli Kugelblitz Choco Drinks

    Einmal editiert, zuletzt von Pride ()

  • Naja, wenn ich den Float abspeichern möchte sprich player.position.X dann bekomme ich Beispielsweise solch ein Wert: 249,250.


    Ich weis nicht ob ich mich hier richtig artikuliere, ich bin verwirrt.

    - heftig abhängig von Karli Kugelblitz Choco Drinks

    Einmal editiert, zuletzt von Pride ()

  • Das Dezimaltrennzeichen ist nicht überall gleich. In Deutschland nutzen wir z.b. , (sollte dir hoffentlich in der Schule aufgefallen sein). In Programmiersprachen nutzen floats aber (fast) immer .. Das muss so sein, weil (u.a.) das Komma teil der Syntax ist. Beispiel:


    Nehmen wir an wir haben die Funktion addieren um zwei Nummern zu addieren:

    C
    function addieren(wert_1, wert_2) {
        // blabla addieren hier
    }



    Wenn wir die Funktion jetzt mit Ganzen Zahlen nutzen wollen sieht das so aus:

    C
    addieren(1, 2) // = 3


    Aber wenn wir jetzt floats addieren wollen haben wir ein Problem:

    C
    addieren(1,1, 2,2) // = ?


    Woher soll der Compiler hier wissen, das wir 1,1 und 2,2 addieren wollen, und nicht 1, 1, 2 und 2? Ergo machts Sinn das in Programmiersprachen . genutzt wird.




    So und nu zu deinem Problem: C# nutzt Lokalisierungen, um zu entscheiden wie Werte formatiert werden wenn sie in einen String umgewandelt werden. Das liegt daran das du, jeh nachdem welche Sprache du sprichst, du verschiedene represäntierungen eines Wertes erwartest. Bekanntestes Beispiel wäre wohl das Datum. Wo du in Deutschland ein Datum im Tag.Monat.Jahr-Format erwartest (16.03.2017), erwarten Amerikaner Monat.Tag.Jahr (03.16.2017). Selbiges gilt für auch für floats. So, und woher weiss C# welches Format du erwartest? Ich hab keine Ahnung, kann man sicher irgendwo einstellen.


    Ist ja aber auch völlig egal, schließlich versuchst du hier nur werte an die DB zu geben (und anders herum). Nutze also einfach ein anderes Trennzeichen (z.b. |) oder speichere die Werte z.b. einzeln.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen