Je voudrais changer le point décimal en un autre caractère en C #. J'ai une variable double
value
double value;
et quand j'utilise la commande:
Console.WriteLine(value.ToString()); // output is 1,25
Je sais que je peux le faire:
Console.WriteLine(value.ToString(
CultureInfo.CreateSpecificCulture("en-GB"))); // output is 1.25
mais je n'aime pas trop ça parce que c'est très long et j'en ai souvent besoin dans mon programme.
Existe-t-il une version plus courte pour définir le "point décimal" vraiment comme un point et non comme une virgule comme cela est courant dans ma culture?
Certains raccourci consiste à créer une classe NumberFormatInfo, définissez sa propriété NumberDecimalSeparator sur "." et utilisez la classe comme paramètre de la méthode ToString () chaque fois que vous en avez besoin.
using System.Globalization;
NumberFormatInfo nfi = new NumberFormatInfo();
nfi.NumberDecimalSeparator = ".";
value.ToString(nfi);
Créer une méthode d'extension?
Console.WriteLine(value.ToGBString());
// ...
public static class DoubleExtensions
{
public static string ToGBString(this double value)
{
return value.ToString(CultureInfo.GetCultureInfo("en-GB"));
}
}
Je comprends peut-être mal l’intention de votre question, alors corrigez-moi si je me trompe, mais ne pouvez-vous pas appliquer les paramètres de culture globalement une fois et ne vous inquiétez pas de la personnalisation de chaque énoncé?
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-GB");
Vous pouvez modifier le séparateur décimal en modifiant la culture utilisée pour afficher le nombre. Attention, cela changera tout le reste du nombre (ex. Séparateur de groupement, tailles de groupement, nombre de décimales). D'après votre question, il semblerait que vous utilisiez par défaut une culture utilisant une virgule comme séparateur décimal.
Pour changer seulement le séparateur décimal sans changer de culture, vous pouvez modifier la propriété NumberDecimalSeparator
de la culture actuelle NumberFormatInfo
.
Thread.CurrentCulture.NumberFormat.NumberDecimalSeparator = ".";
Cela modifiera la culture actuelle du fil. Toutes les sorties seront maintenant modifiées, ce qui signifie que vous pouvez simplement utiliser value.ToString()
pour générer le format souhaité, sans vous soucier de changer de culture à chaque fois que vous produisez un nombre.
(Notez qu'une culture neutre _ ne peut pas avoir son séparateur décimal modifiée.)
Si vous avez une application Web Asp.Net, vous pouvez également la définir dans le web.config
afin qu’elle soit identique dans l’ensemble de l’application Web.
<system.web>
...
<globalization
requestEncoding="utf-8"
responseEncoding="utf-8"
culture="en-GB"
uiCulture="en-GB"
enableClientBasedCulture="false"/>
...
</system.web>
Convert.ToString(value, CultureInfo.InvariantCulture);