Konvertiere String in Dezimal-Mysterium

7

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

    
user730153 27.06.2011, 21:11
quelle

5 Antworten

18

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.

%Vor%     
agent-j 27.06.2011 21:13
quelle
9

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:

%Vor%

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 .

    
Martin Liversage 27.06.2011 21:14
quelle
3

Versuchen Sie es mit dem Kultur-ignoranten Modus

%Vor%     
Arthur P 27.06.2011 21:18
quelle
3

Wir haben uns dem Problem gestellt, als

%Vor%

war 0,5

, aber

%Vor%

war 5!

Die Lösung war,

zu verwenden %Vor%     
nZeus 16.01.2013 21:23
quelle
1

Also, ich habe die nächste Funktion

benutzt %Vor%

Aber es nur für Russisch wie Dezimaltrennzeichen

    
Andrey A .Eroshenko 02.12.2014 10:58
quelle

Tags und Links