C# double - Punkt statt komma

Karl Hermann

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
 

Tobse

Top Contributor
In der Double-Variable steht nicht "
Code:
1,2
drinne". Da steht
Code:
6/5
.
Dein Problem kannst du aber umgehen, indem du die umwandlung des doubles in einen String änderst:
Code:
public String doubleToString(double d)
{
    long i = (long) d;
    return i + ('.' + Double.ToString(d).substring(2));
}

Console.WriteLine(doubleToString(1.53562));
 

hans506

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)
 

InfectedBytes

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

Console.WriteLine(doubleToString(1.53562));
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:
public String doubleToString(double d) {
  return d.ToString().Replace(',', '.');
}

p.s. @hunni3
du hast hier aber einen sehr alten Thread ausgegraben xD
 
K

kneitzel

Gast
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
 
K

kneitzel

Gast
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
 

hunni3

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...
 
K

kneitzel

Gast
Ist doch auch nichts wildes. Du bist hier herzlich willkommen und das ging auch in keiner Weise gegen Dich.
 
Ähnliche Java Themen

Ähnliche Java Themen

Neue Themen


Oben