C# Десятичное число в числовое (?,?)
Вопрос
У меня проблема, решения я пока не нашел, поэтому прошу вашей помощи.В моей базе данных есть целые, десятичные и строковые значения, которые необходимо преобразовать в числовые значения с определенной длиной и точностью для включения в плоский файл.
бывший:
integer 123 to numeric(8,0) ==> 00000123
decimal 123,123 to numeric(8,8) ==> 0000012312300000
String "22" to numeric(8,0) ==> 00000022
Здесь нельзя ставить запятую или точку.Есть ли простое решение, которое я пробую много вещей, но никто не даст мне мой результат, кроме как сделать петли Foreach, поданные в моем плоском файле, слишком грязное !!
РЕДАКТИРОВАТЬ:
плоский файл получает информацию на основе начальной точки и длины, поэтому все данные, которые я включаю в файл, должны иметь определенную длину.А для числовых значений у меня есть, например,
database Decimal Price = 123,456
File Numeric(8,6) Price = 00000123456000
Я хотел знать, как я могу проанализировать любые десятичные или целочисленные данные на основе N(,)
Решение
Попробуй это:
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));
Другие советы
Проверить String.Format
: