Float.Parse(string) verschluckt das Komma

Hallo miteinander,

wenn ich ein Textfeld in float umwandeln will, wird das Komma (".") nicht erkannt. Ich bin darauf angewiesen, dass der Punkt als Dezimalkennzeichen anerkannt wird, und nicht etwa (","). Ich habe auch schon mit dem Parameter System.Globalization.NumberStyles und CultureInfo herumprobiert, aber ohne Erfolg.

Hat da jemand einen Hinweis?

Danke im Voraus
Alexander

Ich möchte noch hinzufügen, dass die Benutzung des System.Globalization.CultureInfo (benutze „en-US“) auch bei der Formatierung von DateTime.ToString() bei mir nicht bei allen Seiten eine Wirkung zeigt. Gibt es eine Einstellung, die die explizite Angabe dieses IFormatProviders noch dominiert? Ich kapier das nämlich nicht…

Hallo.

Ich möchte noch hinzufügen, dass die Benutzung des
System.Globalization.CultureInfo (benutze „en-US“) auch :bei
der Formatierung von DateTime.ToString() bei mir nicht :bei
allen Seiten
eine Wirkung zeigt. Gibt es eine :Einstellung,
die die explizite Angabe dieses IFormatProviders noch
dominiert? Ich kapier das nämlich nicht…

Bei Problemen mit .NET sollte man immer folgendes angeben:

  • Betriebssystem + ServicePacks
  • .NET Runtime Version
  • die verwendete Sprache
  • und die verwendete IDE & deren Version
    …evtl. den ganzen Code nicht vergessen :wink:

Hier könnte etwas dabei sein: http://www.microsoft.com/germany/msdn/library/net/as…
http://www.dotnet-project.de/search.aspx?q=textfeld+…
http://www.aspheute.com/artikel/20000726.htm
http://www.entwickler-forum.de (suche nach System.Globalization.CultureInfo) -> „Bug?..“

HTH
mfg M.L.

Hallo miteinander,

[…]

Hi!

Ich hab’s mal explizit in verschiedenen Konstellationen durchprobiert (WinXP deutsch, .NET 1.1)

string s1 = "3.14";
string s2 = "3,14";
 
float f1 = float.Parse(s1);
float f2 = float.Parse(s2);
 
float f3 = float.Parse(s1, System.Globalization.CultureInfo.CurrentUICulture);
float f4 = float.Parse(s2, System.Globalization.CultureInfo.CurrentUICulture);
 
float f5 = float.Parse(s1, System.Globalization.CultureInfo.CreateSpecificCulture("de-de"));
float f6 = float.Parse(s2, System.Globalization.CultureInfo.CreateSpecificCulture("de-de"));
 
float f7 = float.Parse(s1, System.Globalization.CultureInfo.CreateSpecificCulture("en-us"));
float f8 = float.Parse(s2, System.Globalization.CultureInfo.CreateSpecificCulture("en-us"));

Bei diesem Code ist es überall so, dass s1 (mit ‚.‘) in 314.0 gewandelt wird und s2 (mit ‚,‘) in 3.14.
Einzige Ausnahme ist die letzte Konvertierung, wo explizit angegeben wurde, dass ich eine englische Culture verwenden möchte, dort ist es (auch korrekterweise) umgekehrt: s1 -> 3.14, s2 -> 314.0

Geht das bei Dir nicht so?

Gruß,
Martin

Hallo miteinander,

[…]

Hi!

Ich hab’s mal explizit in verschiedenen Konstellationen
durchprobiert (WinXP deutsch, .NET 1.1)

string s1 = „3.14“;
string s2 = „3,14“;

float f1 = float.Parse(s1);
float f2 = float.Parse(s2);

float f3 = float.Parse(s1,
System.Globalization.CultureInfo.CurrentUICulture);
float f4 = float.Parse(s2,
System.Globalization.CultureInfo.CurrentUICulture);

float f5 = float.Parse(s1,
System.Globalization.CultureInfo.CreateSpecificCulture(„de-de“));
float f6 = float.Parse(s2,
System.Globalization.CultureInfo.CreateSpecificCulture(„de-de“));

float f7 = float.Parse(s1,
System.Globalization.CultureInfo.CreateSpecificCulture(„en-us“));
float f8 = float.Parse(s2,
System.Globalization.CultureInfo.CreateSpecificCulture(„en-us“));

Bei diesem Code ist es überall so, dass s1 (mit ‚.‘) in 314.0
gewandelt wird und s2 (mit ‚,‘) in 3.14.
Einzige Ausnahme ist die letzte Konvertierung, wo explizit
angegeben wurde, dass ich eine englische Culture verwenden
möchte, dort ist es (auch korrekterweise) umgekehrt: s1 ->
3.14, s2 -> 314.0

Geht das bei Dir nicht so?

Wie ich schrieb, war es bei mir nicht so. Nach mehrmaligem Restart funktioniert nun jedoch alles, ich habe aber keine Ahnung, warum. Dass es mit „en-us“ klappen sollte, war mir ja auch klar…

Wie auch immer, vielen Dank für die Hilfe!

Gruß
Alexander