Benutzer mit den meisten Antworten
double mit Punkt oder Komma

Frage
-
Hallo zusammen,
soviel ich weiß wird ja eine als double deklarierte Variable mit Punkt geschrieben also z. B. double zahl = 20.45
In meinem Programm habe ich auch ein array vom Typ double deklariert, also ungefähr so:
array <double> ^TestArray;
und dann auch definiert.
Nur wenn ich jetzt Zahlen aus dem Array oder double Variablen allgemein ausgebe z.B. durch Textdatei oder MessageBox macht er immer aus dem Punkt ein Komma also 20.45 -> 20,45 und ich will das nicht! In meinem Programm soll jede double Variable nur mit Punkten arbeiten...
Weiß jmd was da los ist? Ich glaube es hat was damit zu tun, dass ich mal "using namespace System" und manchmal "using namespace std" verwende...
Antworten
-
Hallo Juli84!
und dann über einen Streamwriter in eine Textdatei, wobei er hier die 20.22
auch als 20,22 ausgibt!Das liegt wie auch in C++ an der entsprechenden Locale in der Dein Prozess läuft. Die Standard-Locale ist eben die Einstellung in der Dein Rechner läuft und die ist ja wohl Deutsch!
Solche Ausgaben und Konvertierungen musst Du immer mit der gewünschten CultureInfo machen.
Du kannst für den Thread eine andere CultureInfo setzen...
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("EN-us");
Das betrifft aber eben alle Konvertierungen in diesem Thread!
Die Frage ist ob Du das wirklich willst...
Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de- Als Antwort markiert Juli84 Montag, 2. August 2010 13:22
Alle Antworten
-
Wie gibst du die Zahl aus?
double d = 11111111.234; Console.WriteLine(d); Console.WriteLine( d.ToString( System.Globalization.CultureInfo. GetCultureInfo("en-US").NumberFormat));
- Als Antwort vorgeschlagen Martin RichterModerator Montag, 2. August 2010 08:36
-
Ich habe keine Konsolenanwendung sondern benutze windows-forms
Die double-Variable gebe ich mit einem Array einmal in einer MessageBox aus:
...
MessageBox::Show( "Das Achseninkrement beträgt " + Rech->getBADaten()[0], "Test",
MessageBoxButtons::OK, MessageBoxIcon::Information );...
später in einem String z.B:
"verschiebe mit v_ptp = 0.05 (" + 20.22 + ")"
und dann über einen Streamwriter in eine Textdatei, wobei er hier die 20.22 auch als 20,22 ausgibt!
-
Hallo Juli84!
und dann über einen Streamwriter in eine Textdatei, wobei er hier die 20.22
auch als 20,22 ausgibt!Das liegt wie auch in C++ an der entsprechenden Locale in der Dein Prozess läuft. Die Standard-Locale ist eben die Einstellung in der Dein Rechner läuft und die ist ja wohl Deutsch!
Solche Ausgaben und Konvertierungen musst Du immer mit der gewünschten CultureInfo machen.
Du kannst für den Thread eine andere CultureInfo setzen...
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("EN-us");
Das betrifft aber eben alle Konvertierungen in diesem Thread!
Die Frage ist ob Du das wirklich willst...
Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de- Als Antwort markiert Juli84 Montag, 2. August 2010 13:22
-
Okay, danke für die Hilfe!
Ich hab das erstmal gelöst indem ich den folgenden Ausruck verwende:
d.ToString(
System.Globalization.CultureInfo.
GetCultureInfo("en-US" ).NumberFormat)Das reicht mir eigentlich fürs Erste! Ob das sehr elegant ist und ich das dauerhaft so mache, sei mal da hingestellt...^^