是否存在舍入函数oracle以舍入到特定的有效位数?
例如,在1278到1300之间,圆到两位有效数字。
答案 0 :(得分:3)
请尝试ROUND(x, d - FLOOR(LOG(10, x)) - 1)
,其中d
是有效位数,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 );
答案 1 :(得分:1)
select round(1348,-2) from dual;
答案 2 :(得分:1)
就在我的脑海中,可能需要进一步优化:)
16:54:16 SYSTEM@dwal> select to_number(to_char(1278, '9.9EEEE')) t from dual;
T
----------
1300
Elapsed: 00:00:00.01
16:54:34 SYSTEM@dwal> select to_number(to_char(.1234, '9.9EEEE')) t from dual;
T
----------
.12
Elapsed: 00:00:00.01