C # Десятичный в Числовой (?,?) - PullRequest
3 голосов
/ 03 августа 2009

У меня проблема, я еще не нашел решения, поэтому прошу вашей помощи. В моей базе данных есть некоторые int, десятичные и строковые значения, которые необходимо преобразовать в числовые с определенной длиной и точностью, чтобы включить в плоский файл.

например:

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

Нельзя ставить запятую или точку. Есть ли простое решение Я пробую много вещей, но ни один из них не даст мне результата, кроме как делать циклы foreach. Подано в моем плоском файле слишком грязно !!

EDIT:

плоский файл получает информацию на основе начальной точки и длины, поэтому все данные, которые я включаю в файл, должны иметь определенную длину. А для цифр у меня для примера

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

Я хотел знать, как я могу проанализировать любые десятичные или целочисленные данные, основанные на N (, )

Ответы [ 2 ]

4 голосов
/ 03 августа 2009

Попробуйте это:

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

Чтобы назвать это:

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

или более общий:

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));
3 голосов
/ 03 августа 2009
...