2017-10-27 3 views
0

Wenn ich 12345.12345 + "" mache, bekomme ich "12345,12345" auf meiner Windows-Maschine IIS Express.Konvertieren Sie die Nummer in einen String ohne Formatierung und verwenden Sie "." als Gleitkomma-Trennzeichen

Ich muss die Zahl in die Standardrepräsentation konvertieren, die von anderen Programmen geparst werden kann, das ist XXXX.XXXX - keine Leerzeichen, keine Kommas. Wie geht das?

+4

ändern Sie die Kultureinstellungen für diese App/Ausdruck. – BugFinder

+0

Ich brauche das Paket unabhängig unabhängig von den Einstellungen zu arbeiten. Ich kann den Server des Kunden nicht kontrollieren und ich möchte keinen weiteren möglichen Fehlerpunkt einführen. –

+0

Sie können in Ihrem Code .... lesen Sie auf Formatierung und Kultur Einstellungen – BugFinder

Antwort

3

Convert.ToString Die Methode hat eine Überlast, die einen zweiten Parameter verwendet, um die Culture die Stringdarstellung Ihre Nummer zu erstellen sein können. CultureInfo.InvariantCulture ist die statische Klasse, die die Klasse enthält. als Dezimaltrennzeichen. Putting alle zusammen Ihre get

string myString = Convert.ToString(12345.12345, CultureInfo.InvariantCulture); 
+0

Beachten Sie, dass es nicht funktioniert mit sehr großen \ sehr kleinen Zahlen, denn für sie wird es auf wissenschaftliche Notation wechseln – Evk

0

Dies erzeugt das gewünschte Ergebnis:

Convert.ToString(12345.12345, System.Globalization.CultureInfo.InvariantCulture); 
1

Die Funktionalität von double.ToString() der Magie sollte:

double number = 1234.1234; 
string s = number.ToString(CultureInfo.InvariantCulture); 
+0

Haben Sie es mit versucht Auf einem Computer mit einer Standardkultur, die das Komma als Dezimaltrennzeichen für Fließkommazahlen verwendet? – Steve

+0

Auf einem englischen Windows vielleicht. – taffer

+2

Diese Methode leidet genau das gleiche Problem, das OP hat. – DavidG

0

Vielleicht können Sie die Kultur für deinen Thread gesetzt:

string lsOut = (1234.1234 + "").ToString(); 
Console.WriteLine(lsOut); 

System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo(System.Threading.Thread.CurrentThread.CurrentCulture.LCID); 
System.Threading.Thread.CurrentThread.CurrentCulture.NumberFormat.NumberDecimalSeparator = "."; 
System.Threading.Thread.CurrentThread.CurrentCulture.NumberFormat.NumberGroupSeparator = ""; 

lsOut = (1234.1234 + "").ToString(); 
Console.WriteLine(lsOut); 

Ausgang ist (Wenn de-DE wird zuerst eingestellt):

1234,1234 
1234.1234 
Verwandte Themen