특정 유효 자릿수로 반올림하는 반올림 기능이 있습니까?Oracle의 특정 유효 자릿수로 반올림
예를 들어, 1278에서 1300 사이의 숫자는 2 자리 숫자로 반올림됩니다. 그냥 내 머리 위로 떨어져
특정 유효 자릿수로 반올림하는 반올림 기능이 있습니까?Oracle의 특정 유효 자릿수로 반올림
예를 들어, 1278에서 1300 사이의 숫자는 2 자리 숫자로 반올림됩니다. 그냥 내 머리 위로 떨어져
select round(1348,-2) from dual;
,
16:54:16 [email protected]> select to_number(to_char(1278, '9.9EEEE')) t from dual;
T
----------
1300
Elapsed: 00:00:00.01
16:54:34 [email protected]> select to_number(to_char(.1234, '9.9EEEE')) t from dual;
T
----------
.12
Elapsed: 00:00:00.01
이 d
는 유효 숫자의 개수 ROUND(x, d - FLOOR(LOG(10, x)) - 1)
및 x
을 시도 더 최적화 : 아마 주제는 반올림 값입니다.
예 : 일반적으로 자신의 한 예를 들어 작동하지만,하지
SELECT
ROUND(x, d - FLOOR(LOG(10, x)) - 1)
FROM (SELECT 1278 x, 2 d FROM DUAL UNION ALL
SELECT 0.1234 x, 2 d FROM DUAL );
"ABS"를 추가하여 음수 값으로 작동하도록 허용하십시오 : ... LOG (10, ABS (x)) ... –
이것은 '3.00'이 두세 개의 시그마 무화과로는 효과가없는 것 같습니다. – alaybourn
. 예를 들어'select round (.1348, -2) from dual;은 0을 반환하지만 그는 아마도 0.13을 원할 것입니다. –
@jonearles에는 좀 더 일반적인 해결책이 있습니까? 덕분에 – dewijones92
이제 훨씬 재미있는 질문 이잖아. 여기에 관련 토론이 있습니다 : https://forums.oracle.com/forums/thread.jspa?threadID=295697&messageID=2848061 – ivanatpr