Autor Beitrag
stugi82
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 33



BeitragVerfasst: Sa 19.07.08 11:35 
Hallo,

ich lese aus einer Textdatei verschiedenen Werte aus. Jetzt möchte ich einige dieser Wert vom Typ string in den Typ double umwandeln.

also ungefähr so:

ausblenden C#-Quelltext
1:
2:
sting a = "1.2";
double b = System.Convert.ToDouble(a)/10.0;


Allerdings ignoriert C# dabei den Punkt, weshalb ich in diesem Beispiel durch 10.0 teilen muss, um das richtige Ergebnis zu erhalten. Geht das auch eleganter, ohne durch 10 zu teilen?

Danke!

Moderiert von user profile iconChristian S.: C#-Tags hinzugefügt
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Sa 19.07.08 11:48 
Hallo!

Das Framework benutzt beim Konvertieren von / in Strings standardmäßig die Zahl-Formatierungen der Systemsprache. Bei einem deutschen System ist "." also nur der Tausender-Trennpunkt und nicht der Dezimal-Separator.

Du kannst aber erreichen, dass eine bestimmte CultureInfo benutzt wird:
ausblenden Delphi-Prism-Quelltext
1:
2:
3:
4:
5:
  var ci := new CultureInfo('en-US');
  var b : Double;
  var s := '1.2';
  if not Double.TryParse(s, NumberStyles.Any, ci, out b) then
    b := Double.NaN;


Grüße
Christian

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
stugi82 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 33



BeitragVerfasst: Sa 19.07.08 12:30 
Danke Christian! Bin immer wieder überrascht, von den Möglichkeiten, die C# bietet.

Gruß Jörg