C# double - Punkt statt komma

Diskutiere C# double - Punkt statt komma im .NET Technology Forum; 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#...

  1. Karl Hermann
    Karl Hermann Neues Mitglied
    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 kostenlose Training weiter --> (hier klicken)
  3. Tobse
    Tobse Bekanntes Mitglied
    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. hans506
    hans506 Neues Mitglied
    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. hunni3
    hunni3 Neues Mitglied
    würde es helfen, ein string.replace durchzuführen? Dann könntest du das Zeichen austauschen.
     
  6. InfectedBytes
    InfectedBytes Bekanntes Mitglied
    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. kneitzel
    kneitzel Bekanntes Mitglied
    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. InfectedBytes
    InfectedBytes Bekanntes Mitglied
    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. kneitzel
    kneitzel Bekanntes Mitglied
    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. hunni3
    hunni3 Neues Mitglied
    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. kneitzel
    kneitzel Bekanntes Mitglied
    Ist doch auch nichts wildes. Du bist hier herzlich willkommen und das ging auch in keiner Weise gegen Dich.
     
  12. Schau dir jetzt hier den Kurs an und lerne Java zu programmieren: --> Hier klicken, um mehr zu erfahren (Klick)
Die Seite wird geladen...

C# double - Punkt statt komma - Ähnliche Themen

Kann ich bei double Komma statt Punkt eingeben?
Kann ich bei double Komma statt Punkt eingeben? im Forum Java Basics - Anfänger-Themen
Double in komma und Punkt akzeptieren -> Robusteeingabe
Double in komma und Punkt akzeptieren -> Robusteeingabe im Forum Java Basics - Anfänger-Themen
Double Punkte Zeichnen
Double Punkte Zeichnen im Forum Java Basics - Anfänger-Themen
Double: auf einmal Komma statt Punkt
Double: auf einmal Komma statt Punkt im Forum Java Basics - Anfänger-Themen
Int umwande in Double/ 1 Miner = 5 Cookies/s
Int umwande in Double/ 1 Miner = 5 Cookies/s im Forum Allgemeine Java-Themen
Thema: C# double - Punkt statt komma