Pergunta

Eu tenho um problema, eu não encontrou ainda a solução, então eu estou pedindo sua ajuda. No meu banco de dados Eu tenho alguns int, decimal e string que precisa ser convertido em numérico com comprimento e precisão específica para incluir em um arquivo simples.

ex:

integer 123 to numeric(8,0) ==> 00000123
decimal 123,123 to numeric(8,8) ==> 0000012312300000
String "22" to numeric(8,0) ==> 00000022

Não pode colocar vírgula ou ponto. Existe uma solução fácil I tentar um monte de coisas, mas ninguém vai me dar o meu resultado, exceto fazendo foreach loops Arquivado em meu arquivo plano muito sujo !!

EDIT:

o arquivo simples obtém informações com base em lá o ponto e o comprimento assim todos os dados i inclu no arquivo tem que ser um comprimento cetain. E para o numérico que tenho por exemple

   database Decimal Price = 123,456
   File     Numeric(8,6) Price = 00000123456000

Eu queria saber como eu poderia analisar todos os dados decimais ou inteiros com base em N (, )

Foi útil?

Solução

Tente isto:

string ToNumericString(int value) {
    return value.ToString("00000000");
}

string ToNumericString(decimal value) {
    var value16 = Math.Truncate(value * 100000000);
    return value16.ToString("0000000000000000");
}

string ToNumericString(string value) {
    return ToNumericString(int.Parse(value, CultureInfo.InvariantCulture));
}

Para chamá-lo:

    MessageBox.Show(ToNumericString(123));
    MessageBox.Show(ToNumericString(123.123M));
    MessageBox.Show(ToNumericString("22"));

ou mais geral:

string ToNumericString(decimal value, int digitsBefore, int digitsAfter) {
    var value16 = Math.Truncate(value * (decimal)Math.Pow(10,digitsAfter));
    return value16.ToString(new String('0', digitsBefore + digitsAfter));
}

MessageBox.Show(ToNumericString(123.123M, 8, 3));
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top