ODP ado.net 드라이버는 문자열 표현에서 여분의 0으로 10 진수를 반환합니다.

StackOverflow https://stackoverflow.com/questions/1807285

문제

오늘의 문제는 다음과 같습니다. 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")

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