C# 소수점에서 숫자 (?,?)
문제
문제가 있습니다. 아직 해결책을 찾지 못했기 때문에 도움을 요청합니다. 내 데이터베이스에는 플랫 파일에 포함 할 특정 길이와 정밀도로 숫자로 변환 해야하는 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));
다른 팁
체크 아웃 String.Format
:
제휴하지 않습니다 StackOverflow