Laden...

Double.TryParse

Erstellt von Zero_Base vor 17 Jahren Letzter Beitrag vor 17 Jahren 1.698 Views
Z
Zero_Base Themenstarter:in
83 Beiträge seit 2005
vor 17 Jahren
Double.TryParse

Hallo zusammen,

ich habe eine frage: wie kann ich mein programm dazu "zwingen", ein double immer mit einem kommazwichen zu verwenden. die Infos kommt aus DB als "string" und muss nachher zu eienr double-zahl umwandelt werden. nun muss es unabhängig von lokalen PC-Einstellungen immer mit einem "," zu einer daoublezahl konvertiert werden. Wenn ich versuche CultureInfo zu verwenden, wird es beim konvertieren voll ignoriert 🙁



  CultureInfo MyCultureInfo = new CultureInfo("de-DE");
    MyCultureInfo.NumberFormat.NumberDecimalSeparator =",";
            double d;
            double.TryParse(str, System.Globalization.NumberStyles.Float, MyCultureInfo, out d);
           

Please help,

Zero_Base

49.485 Beiträge seit 2005
vor 17 Jahren

Hallo Zero_Base,

bei mir klappt es so, wie du willst. Kommen in deiner Zahl Tausendertrenner vor?

herbivore

Z
Zero_Base Themenstarter:in
83 Beiträge seit 2005
vor 17 Jahren

@herbivore

Danke für die schnelle Antwort.
Nein, keine Tausendertrenner. probiere es doch unter Systemsteuerung die Regions-und Sprachoptionen erst zu ändern (z.B. dezimaltrennzeichen auf "." zu setzen) und dann das Code noch mal auszuführen - bei mir nimmt das programm die Einstellungen aus der Systemsteuerung 🙁

Zero_Base

49.485 Beiträge seit 2005
vor 17 Jahren

Hallo Zero_Base,

ich habe es einfach anders herum gemacht. Also eine Zahl mit Punkt genommen und MyCultureInfo.NumberFormat.NumberDecimalSeparator = "." gesetzt. Ich denke, dass sollte direkt vergleichbar sein. Ich probiere es gleich noch mal anderes herum. ==> Geht auch!

Du könntest probieren NumberGroupSeparator so zu setzten, dass da nicht das gleich drinsteht, wie in NumberDecimalSeparator.

herbivore

Z
Zero_Base Themenstarter:in
83 Beiträge seit 2005
vor 17 Jahren

Hallo herbivore,

Ich habe es jetzt noch mal ausprobiert. unter Systemsteuerung habe ich als Dezimaltrennzeichen "." und als Symbol für Zifferngruppierung "," genommen und folgendes im Code geändert:


  CultureInfo MyCultureInfo = new CultureInfo("de-DE");
  MyCultureInfo.NumberFormat.NumberDecimalSeparator = ",";
  MyCultureInfo.NumberFormat.NumberGroupSeparator = ".";

Es funktioniert bei mir trotzdem nicht - alle double-zahlen werden mit einem punkt convertiert 🙁
Gibt es denn keine Option, wo man vorgeben kann, welches zeichen immer, unabhängig von systemeinstellungen benutzt werden soll?

Zero_base

Z
Zero_Base Themenstarter:in
83 Beiträge seit 2005
vor 17 Jahren

@ herbivore
danke nochmals für deine Antwort.

Ich glaube, ich habe die lösung gefunden :

Application.CurrentCulture = MyCultureInfo;

Dann klappt alles 🙂

zero_Base