Format double avec aucun point décimal
Question
J'ai convertir deux à 10 chiffres + 4 décimales.
Disons que: J'ai une double 999,56. J'ai pour obtenir 00000009995600 -> sans virgule
Ce que j'est:
string.format ( "{0: 0000000000,0000}", valeur), mais ce que je reçois est: 0000000999,5600
donc ce que je peux faire maintenant est de rechercher la virgule et le supprimer, mais je voudrais savoir s'il y a une autre façon « propre » de mise en forme dans ce format spécifique?
Merci!
La solution
Puisque vous avez dit que vous voulez éviter String.Replace
:
// avoid whacked out cultures
double value = 999.56m;
CultureInfo info = CultureInfo.GetCultureInfo("en-US");
string s = (10000 * value).ToString("00000000000000", info));
Console.WriteLine(s); // displays "00000009995600"
Mais vraiment, il n'y a rien de mal à cela:
double value = 999.56m;
CultureInfo info = CultureInfo.GetCultureInfo("en-US");
string s = value.ToString("0000000000.0000", info).Replace(
info.NumberFormat.NumberDecimalSeparator,
String.Empty)
Console.WriteLine(s); // displays "00000009995600"
Autres conseils
string.Format("{0:00000000000000}", value * 10000)
Eh bien, je vais utiliser la méthode que je suppose qu'il n'y a pas d'autre moyen « simple » Remplacer ():
Voici ma solution qui est presque le même que la réponse de Jason:
string sep = CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator;
Console.WriteLine(String.Format(fromt, testvalue).Replace(sep, ""));
Merci!
double val = 12345.6789;
return val.ToString().Split('.')[0];
Si vous ne voulez pas (ou ne peut pas) multiplier cela peut fonctionner:
string newValue = value.Replace(",", "");