string to double.
-
Hallo,
ich versuche aus einem string einen float zu machen. der string "-9.8123984" wird da aber komischerweise zu 98123984.0
Was mach ich da falsch?
a = Convert.ToDouble("-9.8123984");
-
ich mache es ja genau wie da:
https://msdn.microsoft.com/de-de/library/zh1hkw6k%28v=vs.110%29.aspx
-
in meinem ersten post meinte ich natürlich double und nicht float
-
Du hast wahrscheinlich ein deutsches Betriebssystem auf dem das Dezimaltrennzeichen als Komma (",") dargestellt wird. In Deinem Beispiel verwendest Du die "englische" Culture. Die ToDouble Methode wird ohne weitere Angaben nur funktionieren, wenn Du das Dezimaltrennzeichen Deines Betriebssystems von "," auf "." stellst.
Eine weiter Möglichkeit wäre, bei der Konvertierung die Culture anzugeben. Dazu musst Du allerdings wissen, in welcher Culture Dein String vorliegt. Wenn Du das immer sicher sagen kannst, dann ist das Dein Weg.
https://msdn.microsoft.com/de-de/library/9s9ak971%28v=VS.110%29.aspx
-
Sehr hilfreich, vielen Dank!
-
noch eine weitere Frage, wenn ich die konvertierten double-Werte in ein Array schreiben will, aber nicht weiß wie viele Elemente es letztlich werden, wie kann ich das lösen?
wenn ich es alsdouble[] dArray ={};
meckert er bei
dArray[0] = Convert.ToDouble(sTemp, provider);
mit "Der Index war außerhalb des Arraybereichs." Was auch sein gutes Recht ist... aber wie löst man das elegant?
-
Da google mein Freund ist:
List<double> dArray= new List<double>();
funktioniert bis jetzt. Messwerte mit 400Hz, 10 Stunden lang, da kämen schon ein paar Millionen Werte zusammen... Gibt es da Grenzen nach oben?
-
Solange der Speicher reicht.
Ein "double" brauchen 8 Byte, eine Millionen Werte belegen also 8MB. Und soviel zusammenhängenden Speicher bekommst du ohne Probleme.
Ab 1GB, also ca. 125 Millionen Elementen könnte es Probleme geben, bis dahin sollte es glattgehen.