c# convert Wie kann man das Symbol für das Dezimalzeichen in double.ToString() ändern?




c# string format decimal separator (5)

Ich möchte das Dezimalzeichen in ein anderes Zeichen in C # ändern. Ich habe einen double Variablenwert

double value;

und wenn ich den Befehl verwende:

Console.WriteLine(value.ToString()); // output is 1,25

Ich weiß ich kann das:

Console.WriteLine(value.ToString(
    CultureInfo.CreateSpecificCulture("en-GB"))); // output is 1.25

aber ich mag es nicht sehr, weil es sehr lang ist und ich es oft in meinem Programm brauche.

Gibt es eine kürzere Version, um "Dezimalpunkt" wirklich als Punkt und nicht als Komma zu setzen, wie es in meiner Kultur üblich ist?


Answer #1
Convert.ToString(value, CultureInfo.InvariantCulture);

Answer #2

Erweiterungsmethode erstellen?

Console.WriteLine(value.ToGBString());

// ...

public static class DoubleExtensions
{
    public static string ToGBString(this double value)
    {
        return value.ToString(CultureInfo.GetCultureInfo("en-GB"));
    }
}

Answer #3

Wenn Sie eine Asp.Net-Webanwendung haben, können Sie sie auch in der web.config so web.config , dass sie in der gesamten Webanwendung gleich ist

<system.web>
    ...
    <globalization 
        requestEncoding="utf-8" 
        responseEncoding="utf-8" 
        culture="en-GB" 
        uiCulture="en-GB" 
        enableClientBasedCulture="false"/>
    ...
</system.web>

Answer #4

Sie können das Dezimaltrennzeichen ändern, indem Sie die Kultur ändern, in der die Zahl angezeigt wird. Beachten Sie jedoch, dass dadurch alles andere an der Zahl geändert wird (z. B. Gruppentrennzeichen, Gruppierungsgrößen, Anzahl der Dezimalstellen). Aus Ihrer Frage sieht es so aus, als würden Sie eine Kultur verwenden, die ein Komma als Dezimaltrennzeichen verwendet.

NumberDecimalSeparator Sie nur das Dezimaltrennzeichen ändern NumberDecimalSeparator ohne die Kultur zu ändern, können Sie die NumberDecimalSeparator Eigenschaft der NumberDecimalSeparator der aktuellen Kultur NumberFormatInfo .

Thread.CurrentCulture.NumberFormat.NumberDecimalSeparator = ".";

Dadurch wird die aktuelle Kultur des Threads geändert. Die gesamte Ausgabe wird jetzt geändert, was bedeutet, dass Sie value.ToString() können, um das value.ToString() Format auszugeben, ohne sich jedes Mal, wenn Sie eine Zahl ausgeben, die Kultur zu ändern.

(Beachten Sie, dass das Dezimaltrennzeichen einer neutral Kultur nicht geändert werden kann.)


Answer #5

Vielleicht missverstehe ich die Absicht Ihrer Frage falsch, also korrigieren Sie mich, wenn ich falsch liege, aber können Sie die Kultureinstellungen nicht einmal global anwenden und sich dann keine Gedanken machen, jede Schreibanweisung anzupassen?

Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-GB");




tostring