오라클 데이터 타입숫자타입NUMBER 를 사용한다.

<열 이름> NUMBER ( 정확도, [,스케일] )

   NUMBER - 정확도나 스케일을 지정하지 않으면 NUMBER(38) 이다.
   NUMBER(9,2) - 9개의 숫자길이를 가지며 소수점 이후 2개의 숫자 길이를 가지는 숫자타입.
                          예를들어 1, 123456, 123456.89등이 있으며 12345678은 포함하지 않음.
   NUMBER(4,10) - 매우 작은 수 표현

다음과 같은 정보를 가진상태에서 Message 를 통해 데이터를 주고 받는경우를 생각해보자.

Business Framework 인 ProFrame 과의 연동을 생각해볼 때

C 언어의 long, float, double 무엇을 사용하든 정확하게 NUMBER 타입에서 값을 저장하여 Message 로 생성하기 위해서는 +2 개의 자리수를 잡아야 하는데

Sign(+/-) 기호를 저장하기 위한 1Byte
Point(소수점.) 기호를 저장하기 위한 1Byte 가 그것이다.

Number(10.5) 라는 DB 타입이 있다면 즉 ProFrame 에서는 Number (10.5)[PfmNumber 타입으로 생성됨]를 사용하던가 double 10 + 2 . 즉 double 12 자리를 확보해놓아야한다.

Number(10.5) -12345.67891 == Double 12 

Structure 와 Message 간의 정확도를 높이기 위해서는 다음과 같은 작업이 필수가 되야한다. 
물론 자리수가 꽉차지 않는다는 100% 보장만 있다면 저런작업은 하지 않아도 되겠지만.


참고
Structure -> Message 로 변경하는 작업을 Marshalling 이라 함.
Message -> Structure 로 변경하는 작업을 UnMarshalling 이라 함.



페이스북 댓글
티스토리 댓글

+ Recent posts