oracle 소수점 처리 문의드립니다. 0 6 1,199

by DB초보자입니다 [Oracle 기초] [2017.08.07 11:22:45]


안녕하세요

작성된 프로시저를 확인해 보다가 궁금점이 있어서 문의드립니다.

 DECLARE
  RSLT1 varchar2(100);
BEGIN
  RSLT1 := '.4' ;
  RSLT1 := TO_NUMBER(TO_NUMBER(RSLT1) + TO_NUMBER('1.04')) ;
  
  DBMS_OUTPUT.Put_Line('a'||RSLT1);
END;

RSLT1 값을 확인해보면 1.44가 나옵니다.

RSLT1 의값을 0.4로 바궈도

1.44가 나오는데 제가 원하는값은 

.4 + 1.04 이든 0.4+1.04 가 되든 1.8이라는 결과값을 얻고싶은데 어떻게 해야될까요?

by 마농 [2017.08.07 11:34:05]

질문이 모호하여 잘 이해가 안가요.
뭘 원하시는지 명확하게 표현해 주세요.
최종 원하시는 출력결과 2줄을 명확하게 적어주세요.


by DB초보자입니다 [2017.08.07 11:36:53]

.4+1.04  거나 0.4+1.04 일경우 결과값은 1.8로 만들고 싶습니다. 


by 마농 [2017.08.07 12:21:16]

모호한 표현이네요?
왜 다른 계산식인데 같은 결과가 나와야 하는지?
0.4 + 1.04 = 1.44 인데... 왜 1.8 이 나와야 하는지? 도무지 이해 불가요.


by jkson [2017.08.07 11:40:03]

문자형 -> 숫자형으로 변환 시 소수점 위 0 이 날아가버리는 문제 때문에 그러시는 것 같네요.

DECLARE
   RSLT1 VARCHAR2(100);
   RSLT2 VARCHAR2(100);
   RSLT3 NUMBER;

BEGIN
   RSLT1 := '.4' ;

   RSLT1 := RTRIM(TO_CHAR(TO_NUMBER(RSLT1) + TO_NUMBER('1.04') - 1,'fm999,999,990.999'),'.') ;
   RSLT2 := RTRIM(TO_CHAR(TO_NUMBER(RSLT1) + TO_NUMBER('1.4') -1,'fm999,999,990.999'),'.') ;

   DBMS_OUTPUT.PUT_LINE('a'||RSLT1);
   DBMS_OUTPUT.PUT_LINE('b'||RSLT2);
END;
  

 


by jkson [2017.08.07 12:57:20]

밥 먹기 전에 대강 읽고 답변 달았더니ㅋㅋ 원하시는 게 이게 아니네요?

그리고 본문도 좀 바뀌었네요? 아까는 A.44, B.84 결과가 나오는 내용이었는데..

그러면 작성자님이 원하시는 거는..  rslt1 의 소수점 값만을 읽어서

1.04와 더해준 값을 표시하시고 싶은 건가요?

아.. 이것도 아닌데.. 뭐죠?-_-?


by DB초보자입니다 [2017.08.07 13:45:02]

답글 달아주신분들 죄송합니다.

질문을 잘 못 올렸네요..

답변달아주신분들 감사하고 죄송합니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입