J'ai besoin de convertir une décimale en une chaîne avec N décimales (deux ou quatre) et NO séparateur de milliers:
"XXXXXXX (point) DDDDD"
Le problème avec CultureInfo.InvariantCulture
c'est que ce sont des endroits ',' pour séparer des milliers.
MISE À JOUR
Cela devrait fonctionner pour les types décimaux et doubles.
Ma question précédente: Besoin de convertir double ou décimal en chaîne
Pour un decimal
, utilisez la méthode ToString et spécifiez la culture invariante pour obtenir un point comme séparateur décimal:
value.ToString("0.00", System.Globalization.CultureInfo.InvariantCulture)
Le type long
est un entier, il n'y a donc pas de partie fraction. Vous pouvez simplement le formater en une chaîne et ajouter des zéros par la suite:
value.ToString() + ".00"
Il est vraiment facile de spécifier votre propre séparateur décimal. Il m'a juste fallu environ 2 heures pour le comprendre: D. Vous voyez que vous utilisiez la culture actuelle ou autre que vous spécifiez, n'est-ce pas? Eh bien, la seule chose dont l'analyseur a besoin est un IFormatProvider. Si vous lui donnez le CultureInfo.CurrentCulture.NumberFormat
en tant que formateur, il formatera le double en fonction de NumberDecimalSeparator
de votre culture actuelle. J'ai simplement créé une nouvelle instance de la classe NumberFormatInfo
et défini sa propriété NumberDecimalSeparator
sur la chaîne de séparation que je voulais. Code complet ci-dessous:
double value = 2.3d;
NumberFormatInfo nfi = new NumberFormatInfo();
nfi.NumberDecimalSeparator = "-";
string x = value.ToString(nfi);
Le résultat? "2-3"
Je préfère utiliser ToString()
et IFormatProvider
.
double value = 100000.3
Console.WriteLine(value.ToString("0,0.00", new CultureInfo("en-US", false)));
Sortie: 10 000,30