ODP ado.net 드라이버는 문자열 표현에서 여분의 0으로 10 진수를 반환합니다.
문제
오늘의 문제는 다음과 같습니다. Oracle 데이터베이스에 테이블이 있습니다. 테이블에는 유형 번호 (18, 3)의 필드가 포함되어 있습니다.
표면적으로, 상기 현장에서 데이터를 저장하고로드하는 것이 완벽하게 작동합니다. 그러나 추가 검사는 3 자리 숫자가있는 숫자 (예 : 500.001)가 데이터베이스에서 읽는 방식으로 읽습니다. 문자열 표현 10 진수의에는 네 번째, 제로 숫자가 있습니다 (예 : 500.0010). 이것은 세 번째 소수점 자리가 0이 아닌 때마다 발생하는 것 같습니다.
수학 목적의 경우 이것은 문제가되지 않습니다. 그러나 문자열로 변환 한 다음 10 진수 숫자 수를 계산하여 소수점 숫자 수를 십진수 수로 확인하는 검증기가 있습니다. 이 특정 데이터는 최대 3 자리 숫자를 갖도록 정의되므로 여분의 0은 유효성 검사 오류를 유발합니다.
유효성 검사기를 변경할 수 없으므로 숫자를 끈으로 변환하고 후행 0을 다듬은 다음 다시 준비하는 것 외에도 여분의 0없이 소수점을 얻는 깨끗한 방법이 있는지 궁금합니다. 아니면 다른 일을해야합니까?
해결책
이 시도:
decimal trimmed = ((decimal)((int)(number * 1000))) / 1000
int로 캐스팅하면 분수 부분이 제거됩니다. 모든 괄호가 필요하지는 않지만 운영 순서가 명시 적으로 표시되면 무슨 일이 일어나고 있는지 확인하는 것이 더 쉽다고 생각합니다.
다른 팁
나는 같은 문제에 부딪 쳤지 만 사용했습니다. number.ToString("F3")
제휴하지 않습니다 StackOverflow