Formatar duplo com nenhum ponto decimal
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!
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(",", "");