C# double - Punkt statt komma

Dieses Thema C# double - Punkt statt komma im Forum ".NET Technology" wurde erstellt von Karl Hermann, 11. Jan. 2014.

Thema: C# double - Punkt statt komma Moin, hab' mal ne Frage zu C# Und zwar möchte ich vom Benutzer eingegebene Double Werte gerne in einer mysql...

  1. Moin,

    hab' mal ne Frage zu C#
    Und zwar möchte ich vom Benutzer eingegebene Double Werte gerne in einer mysql Datenbank abspeichern.
    Bei C# wird allerdings nur ein komma (",") akzeptiert, in die Datenbank kann man jedoch nur mit Punkt (".") abspeichern.
    Beispiel:
    Benutzer gibt 1,2 ein.
    In der double Variable steht dann auch 1,2 drinne.
    Dieser Wert soll dann in die Datenbank gespeichert werden.
    Dort steht aber dann nur 12 drinne, da mysql keine kommas akzeptiert sondern nur Punkte.
    Versteht ihr was ich meine?

    Bitte um Hilfe ???:L

    Merci
     
  2. Vielleicht hilft dir das Grundlagen Training weiter --> *Klick*
  3. In der Double-Variable steht nicht "
    Code (Text):
    1,2
    drinne". Da steht
    Code (Text):
    6/5
    .
    Dein Problem kannst du aber umgehen, indem du die umwandlung des doubles in einen String änderst:
    Code (Text):

    public String doubleToString(double d)
    {
        long i = (long) d;
        return i + ('.' + Double.ToString(d).substring(2));
    }

    Console.WriteLine(doubleToString(1.53562));
     
     
  4. Der Typ des Variablen ist entscheidend... Ausserdem hängt es bei C# auch mit den Regional-Settings zusammen wie das Dezimaltrennzeichen interperetiert wird (als Punkt oder Komma)
     
  5. würde es helfen, ein string.replace durchzuführen? Dann könntest du das Zeichen austauschen.
     
  6. Sehr problematische Methode. Sobald der Benutzer eine Zahl mit zwei Stellen vor dem Komma hat, ist schon alles zerschossen. Zudem ist long nicht in der Lage den großen Wertebereich von double abzudecken.
    Viel einfacher wäre es mit string replace zu arbeiten
    Code (Text):

    public String doubleToString(double d) {
      return d.ToString().Replace(',', '.');
    }
     
    p.s. @hunni3
    du hast hier aber einen sehr alten Thread ausgegraben xD
     
  7. Ich hätte da mal eine Frage :)

    Wie verwendest Du denn den double? Ich habe jetzt gerade das Gefühl, dass Du SQL Statements per String Concatenation zusammen stellst. Und da kann ich nur eins zu sagen: NEVER EVER DO THAT!
    Also wirklich NIEMALS! Es gibt in meinen Augen keinen Grund, der sowas in irgend einer Weise rechtfertigt / erlaubt!

    Hintergrund: Die Text-Darstellung von Werten (speziell Datum und Fließkommazahlen) ist immer abhängig von der Localization. Localization bezeichnet, wie ein User etwas dargestellt bekommen will.

    In einer Applikation sollte jede Ausgabe und Eingabe im vom User gewünschten Format erfolgen. Der Benutzer stellt dies in seinem System / Useraccount ein und das zählt dann. D.h. der User gibt vor, wie eine Zahl dargestellt werden soll. Und wenn ich 12|345/78 für die Zahl 12.345,78 (Deutsche Darstellung, tausender Punkt und Komma für Nachkommastellen) haben will, dann will ich das haben. Bei C# sollte dies nie ein Thema sein. (Java kenne ich diese Thematik so noch nicht. Da wird es aber wohl auch sowas wie Localization geben!)

    Und andere Systeme haben dann andere Einstellungen. Das kann die Kommunikation erschweren. Mal ganz von einfachen Problemen wie Sonderzeichen mal abgesehen.

    Es gibt eigentlich bei jeder Implementation die Übertragung von Parametern. Dies ist zwingend zu nutzen! Dann wird ein Float als Float übergeben. Nicht als Zeichenkette sondern sauber als Zahl.
    Und ein String wird als String übergeben und es gibt keine Probleme mit " oder ' und so!
    Und ein Datum ist ein sauberes Datum - unabhängig was für eine Darstellung ein User oder ein System erwarten.

    Konrad
     
  8. Der ganz saubere Weg wäre z.b. dieser hier:
    Code (Text):

    d.ToString(CultureInfo.CreateSpecificCulture("en-US"))
     
    p.s.
    Ich bezweifel das du eine Antwort bekommen wirst, da der ursprüngliche Thread 2 Jahre alt ist und nur von hunni3 ausgegraben wurde^^
     
    kneitzel gefällt das.
  9. Jo, Frage passt auch nicht. Ist eher eine wichtige Anmerkung. Und wenn es um einen Zugriff auf eine Datenbank geht, dann ist das Umwandeln in einen String generell falsch! Wenn ich euch eine Datenbank bereitstellen müsste, dann würde ich die mit den irgendwelchen ganz dubiosen Lokalisierungen laufen lassen nur um zu schauen, wie hier versucht, die hin zu bekommen... also | als Tausender-Trennzeichen und / als "Komma" gefällt mir z.B. schon recht gut :)

    (Ja, ich bin so böse :) Wenn jemand von mir einen Windows Server aufgebaut bekommen will, dann bekommt der auch ein chinesisches Setup vorgegeben.)

    Konrad
     
  10. Ach Jungs.... ich hab mich hier doch angemeldet weil ich Hilfe bei Java brauche und ich da keine Ahnung von hab. Da dachte ich als .Net Progger könnte ich jedenfalls ein bisschen was zurück geben ;)
    Aber ich hab erst beim Abschicken bemerkt wie alt der Beitrag war...
     
  11. Ist doch auch nichts wildes. Du bist hier herzlich willkommen und das ging auch in keiner Weise gegen Dich.
     
  12. Kostenloses Java-Grundlagen Training im Wert von 39 €
    Schau dir jetzt hier das Tutorial an und starte richtig durch!