Ich habe ein Problem mit der Konvertierung von String in Dezimal mit C # .NET. Das Problem ist, dass ich den folgenden Code geschrieben habe und auf meinem Entwicklungssystem Windows 7 .NET Framework 3.5 funktioniert. Aber wenn ich die Anwendung auf dem Windows 2003 Server .NET 3.5 Framework verschiebe, ist das Ergebnis anders. Kann jemand verstehen, was dort passiert?
Code:
%Vor%Windows 7 Ergebnis: 85,00 Windows 2003 Ergebnis: 8500
Es kann sein, dass die Regions- und Kultureinstellungen auf Ihrem Server mit ,
als Dezimalzahl und .
als Zifferngruppierung festgelegt sind. Siehe Einstellungen für Systemsteuerung / Region und Kultur.
Wenn diese numerische Zeichenfolge von Ihrer Anwendung generiert wird, verwende ich CultureInfo.InvariantCulture
an beiden Stellen.
Sie sind von regionalen Einstellungen betroffen. Wenn die Zeichenfolge 85.00 in einem Gebietsschema analysiert wird, in dem der Dezimaltrennzeichen mit Vollstopp verwendet wird, lautet das Ergebnis 85,00. Wenn Komma als Dezimaltrennzeichen verwendet wird, lautet das Ergebnis 8500.
Verwenden Sie die Überladung, für die Sie CultureInfo
angeben:
Sie können auch CultureInfo.InvariantCulture
verwenden, das ist das Standard-.NET CultureInfo
und ähnlich dem englischen CultureInfo
.
In einer Produktionsqualitätsanwendung sollten Sie immer CultureInfo
angeben oder kennen, wenn Sie Strings parsen und formatieren. Wenn Sie die Codeanalyse in Ihrem Projekt aktivieren, erhalten Sie Warnungen, wenn Sie dies vergessen: CA1304: Geben Sie CultureInfo an .
Also, ich habe die nächste Funktion
benutzt %Vor%Aber es nur für Russisch wie Dezimaltrennzeichen