2009-12-10 10 views
3

Je dois convertir le double en 10 chiffres + 4 décimales. Alors, disons: J'ai un double 999,56. Je dois obtenir 00000009995600 -> sans virgule!Format double sans point décimal

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 pour la virgule et supprimez-le, mais je voudrais savoir s'il existe un autre moyen de formatage "propre" dans ce format spécifique?

Merci!

Répondre

4

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 avec 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" 
+0

Merci! J'ai fait la même chose il y a quelques minutes car je n'ai rien trouvé d'autre! J'ai également utilisé le CulterInfo, mais n'a pas appelé GetCulterInfo(). Voici ce que j'ai fait: string sep = CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator; Console.WriteLine (String.Format (fromt, testvalue) .Replace (sep, "")); Merci! – Gohlool

15
string.Format("{0:00000000000000}", value * 10000) 
+0

Eh bien, c'était clair pour moi aussi, mais le problème est que je n'ai aucune idée de la valeur que je reviens! Il peut également être seulement 1.898 ou xx.x ou xxxxx.xxx ou quoi que ce soit! – Gohlool

+0

Alors? L'as tu essayé? – Stu

-2

Si vous ne voulez pas (ou ne peut pas) multiplier cela peut fonctionner:

string newValue = value.Replace(",", ""); 
0

Eh bien, je vais utiliser la méthode replace() car je suppose qu'il n'y a pas d'autre moyen « simple »:

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!

0
double val = 12345.6789; 
return val.ToString().Split('.')[0]; 
+0

J'essaie le code en Java ne permet pas de split ('.'), Je peux utiliser comme ça: "3232.122" .split (".") [0]; – iCrazybest