3

是否有舍入函数 oracle 可以舍入到特定数量的有效数字?

例如,将 1278 舍入到 1300,舍入到两位有效数字。

4

3 回答 3

3

就在我的脑海中,可能是进一步优化的主题:)

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
于 2012-12-05T08:55:44.257 回答
3

试试ROUND(x, d - FLOOR(LOG(10, x)) - 1)whered是有效位数,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  );
于 2013-11-06T14:11:21.943 回答
1
select round(1348,-2) from dual;
于 2012-12-04T18:44:33.523 回答