Pregunta

Tengo un problema, aún no encontré la solución, por lo que solicito su ayuda. En mi base de datos tengo algunos int, decimales y cadenas que deben convertirse en numéricos con una longitud y precisión específicas para incluir en un archivo plano.

ex:

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

No puede poner coma o punto. Hay una solucion facil ¡Intento muchas cosas, pero ninguna me dará el resultado, excepto hacer bucles para cada archivo Archivado en mi archivo plano demasiado sucio!

EDITAR:

el archivo plano obtiene información basada en el punto de inicio y la longitud, por lo que todos los datos que incluyo en el archivo tienen que ser una longitud completa. Y para el numérico que tengo por ejemplo

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

Quería saber cómo podría analizar cualquier información decimal o entera basada en N (, )

¿Fue útil?

Solución

Prueba esto:

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 llamarlo:

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

o más general:

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));

Otros consejos

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top