문제

문제가 있습니다. 아직 해결책을 찾지 못했기 때문에 도움을 요청합니다. 내 데이터베이스에는 플랫 파일에 포함 할 특정 길이와 정밀도로 숫자로 변환 해야하는 int, decimal 및 string이 있습니다.

전:

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

쉼표 나 점을 넣을 수 없습니다. 쉬운 솔루션이 있습니까? 많은 것을 시도하지만 평평한 파일에 너무 더럽게 제출 된 루프를하는 것 외에는 아무도 내 결과를 줄 수 없습니다 !!

편집하다:

플랫 파일은 시작점과 lenght를 기반으로 정보를 가져 오므로 파일에 포함 된 모든 데이터는 Cetain Lenght 여야합니다. 그리고 숫자를 위해 나는 예를 들어 있습니다

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

다른 팁

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top