Hallo, ich habe ein Problem bei der Typenumwandlung unter C#. Ich möchte einen string in ein float umwandeln. Es geht mir aber das Komma (bzw der Punkt) verloren. Was mache ich falsch? Ich habe schon gegoogelt aber nicht gefunden. string sValue = "1.234"; float fValue = 0.0; fValue = float.Parse(sValue); textBox1.Text = fValue.ToString(); Ausgabe: 1234 Danke für Eure Hilfe RingoStar
float.Parse verwendet aller Wahrscheinlichkeit nach die lokalen Einstellungen für das Zahlenformat. In Deutschland aber ist das Trennzeichen zwischen Vor- und Nachkommastellen eben das Komma und nicht der Punkt. Dieser hat hierzulande nur lesefördernde Funktion und gliedert Tausendergruppen. Damit wird ist der übergebene String als 1234,0 und nicht als 1,234 interpretiert. Probiere mal string sValue = "1,234"; aus ...
Der wird deine lokalen Ländereinstellungen verwenden. Ich wette, das steht auch in der MSDN dazu. Such mal nach 'Locale' oder so. Wenn du dem sagst, er möchte das ganze doch bitte in der US-Notation machen, dann geht das. Die dreckige Lösung: Ersetz einfach den Punkt durch Komma. Gruß Kai ps: Zweiter! ;)
Hallo, danke für Eure schnelle Antwort. Ich bekomme den String mit Punkt über die serielle Schnittstelle. Da kann ich den Punkt nicht so ohne weiteres ersetzen. Gruß RingoStar
Die String-Klasse und Artverwandte hält mit Sicherheit Methoden dafür bereit.
Hallo, klar gibt es solche Funktionen wie z.B. replace() sValue = sValue.Replace('.', ','); Damit klappt es dann auch. Ich habe aber bei so einer Sache gewaltige Bauchschmerzen. Hat jemand noch eine elegantere Idee? Das ganze Gebietsschema wollte ich dafür auch nicht gleich umschalten. Er soll lediglich den Punkt als Komma interpretieren. Gruß RingoStar
RingoStar wrote:
> Das ganze Gebietsschema wollte ich dafür auch nicht gleich umschalten.
Musst du auch nicht.
Du kannst doch dem Parse einen Formatprovider mitgeben.
Ansonsten kannst du natürlich noch deine eigene Parse
Funktion schreiben. Die macht das dann so wie du dir
das vorstellst.
Dieser Komma-Punkt Unsinn ist bei mir auch immer ein PITA.
Ich bin dafür, dass wir in Deutschland auch einen Dezimalpunkt statt Komma verwenden - als Ausgleich wird das Imperiale Maßsystem eingestampft - und die Franzosen opfern ihre Aussprache für Zahlen! - Das wär'n Deal finde ich ;)
> und die Franzosen opfern ihre Aussprache für Zahlen!
Du meinst, die Franzosen übernehmen die Zahlworte für 70, 80 und 90 von
den Belgiern resp. Schweizern?
septante
octante oder nur in der Schweiz huitante
nonante
Das "imperiale Maßsystem" will ich aber behalten. Ich mag Quadratfuß,
Kubikinch und vor allem das Pint. Das nämlich ist genau das kleine
Quentchen mehr als ein halber Liter, der einen in der Kneipe dazu
bringt, sich ein zweites (drittes, viertes ...) Halbliterglas bringen zu
lassen.
Cheerio!
Ich finde die englische Aussprache am Besten. Wer ahnt schon im Deutschen, dass die Zahl '123456' in der Reihenfolge '132465' ausgesprochen werden muss. Bei den Franzosen meinte ich z.B. 1999 dix-neuf-cent-quatre-vingt-dix-neuf (oder so) zehn-neun-hundert-vier-zwanzig-zehn-neun Teufelswerk, jawohl! Das Pint wird einfach auf ein Liter mit 40% Messfehler geeicht und kostet 3 Kubikeuro. Wenn wir schon dabei sind können wir auch alle Umlaute weglassen (weg mit den Encodings - back to ASCII), vom Dezimalsystem auf's hexadezimale umstellen und das Jahr hätte 265 Tage à 32 Stunden... Schaltjahre sind LSB-Rauschen und Jahreszeiten nur unterschiedliche Duty-Cycles der Sonnen-PWM. In diesem Sinne gebe ich zurück in die geschlossene Anstalt... back to topic...
> 1999 > dix-neuf-cent-quatre-vingt-dix-neuf (oder so) dix-neuf-cent-nonante-neuf zehn-neun-hundert-neunzig-neun. Sofern man es bei der Jahrhundersprechweise lässt, ist das konsistent und logisch. Alternativ wäre mille-neuf-cent-nonante-neuf auch eine Möglichkeit tausend-neun-hundert-neunzig-neun Une bière, j'ai soif!
>Das nämlich ist genau das kleine >Quentchen mehr als ein halber Liter, der einen in der Kneipe dazu >bringt, sich ein zweites (drittes, viertes ...) Halbliterglas bringen zu >lassen. das stimmt nicht ganz, ich habe mir mal ein paar Pints aus Englang mitgebracht. Ein Pint passt da nur rein wenn man das Glas bis zum Rand vollschüttet! Wenn da nur ein paar mm Schaum drauf sind dann ist in einem Pint Glas auch nur effektiv ein halber Liter drin. Tja, schon Obelix wusste: die Spinnen, die Briten !
zum Topic: lässt sich ganz einfach lösen mit Angabe der FormatInfo: statt: fValue = float.Parse(sValue); verwende: fValue = float.Parse(sValue, NumberFormatInfo.InvariantInfo); dazu muß noch die Globalisierung benutzt werden: using System.Globalization;
Hallo, Vielen Dank, genau das habe ich gesucht. Es luppt! Gruß RingoStar
> ich habe mir mal ein paar Pints aus Englang mitgebracht. > Ein Pint passt da nur rein wenn man das Glas bis zum Rand > vollschüttet! Genau so sieht es das britische Eichwesen vor. Und genauso wird in Großbritannien Bier ausgeschenkt. Der Glasrand ist das Äquivalent des Eichstriches. Britisches Bier schäumt nicht so stark wie deutsches, und mit etwas Feinmotorik ist das kein Problem. Für die anderen liegen im Pub die sogenannten "beer mats" aus Frottee auf der Bar.
PITA - was ist das? Google hält es für ein Fladenbrot...
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.