舍入到Oracle中的特定有效位数

时间:2012-12-04 18:42:31

标签: sql oracle

是否存在舍入函数oracle以舍入到特定的有效位数?

例如,在1278到1300之间,圆到两位有效数字。

3 个答案:

答案 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