Pergunta

Eu tenho para converter double de 10 dígitos + 4 decimal.

então vamos dizer: Eu tenho um duplo 999,56. Eu tenho para obter 00000009995600 -> sem vírgula

!

O que eu tenho é:

string.format ( "{0: 0000000000,0000}", value), mas o que eu recebo é: 0000000999,5600

então o que posso fazer agora é procurar a vírgula e excluí-lo, mas eu gostaria de saber se existe outra forma "limpa" de formatação neste formato específico?

Obrigado!

Foi útil?

Solução

Uma vez que você disse que quer String.Replace evitar:

// 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"

Mas, realmente, não há nada de errado com ele:

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"

Outras dicas

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

Bem, vou usar o método replace () desde que eu acho que não há nenhuma outra maneira "simples":

Aqui está a minha solução que é quase o mesmo que a resposta de Jason:

string sep = CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator;
Console.WriteLine(String.Format(fromt, testvalue).Replace(sep, ""));

Obrigado!

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

Se você não quer (ou não pode) multiplicar em seguida, isso pode funcionar:

string newValue = value.Replace(",", "");
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top