* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.
Linux 64bit | |
8.4.4.8004 | |
CUBRID Manager 9.3.6.007 (32bit) | |
* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.
에러 내용 및 재현 방법 | 재현 가능한 Source와 SQL |
관련 테이블(인덱스, 키정보 포함) 정보 | CUBRID 홈 디렉토리 아래 log 디렉토리 압축 |
-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------
안녕하세요
반올림에 대해서 질문 드립니다.
아래 스크립트를 순서대로 실행해서
쿼리를 돌려보면 0.01 이 아닌 0.00 나옵니다.
왜 반올림이 안될까요???
확인 부탁드립니다.
CREATE TABLE TB_TEST (
AAA FLOAT
);
INSERT INTO TB_TEST (AAA) VALUES(0.005);
SELECT AAA, ROUND(AAA,2)
FROM TB_TEST;
AAA의 데이터 타입이 FLOAT여서 발생된 문제로 보입니다.
참고 : FLOAT 데이터 타입은 7자리의 유효 자릿수를 넘는 입력 값에 대해 근사치를 저장하는 타입이므로 유효 자릿수를 넘어서는 정확한 값을 저장하려면 사용하지 않도록 주의한다.
원하는 결과값을 얻기위해서 AAA NUMERIC(4,3)으로 변경해 확인해 보세요
csql> select aaa,round(aaa,2) from tb_test;
aaa round(aaa, 2)
============================================
0.005 0.010