修改 Oracle 中的 ROUND UP 函数

Modified ROUND UP function in Oracle

我有特殊要求,我想以下面的方式将 向上 个数字四舍五入 -

   1.14 to 1.5
    1.6 to 2
    0.8 to 1
    7.5 to 7.5

即最接近 0.5 的倍数。

有办法实现吗?

此致

这是一种方法:

select floor( val * 2 + 1) / 2

如果要四舍五入到最接近的 0.5:

测试数据:

CREATE TABLE your_table ( value ) AS
  SELECT 1.14 FROM DUAL UNION ALL
  SELECT 1.6  FROM DUAL UNION ALL
  SELECT 0.8  FROM DUAL UNION ALL
  SELECT 7.5  FROM DUAL;

查询:

SELECT value,
       CEIL( value * 2 ) / 2 AS rounded_value
FROM   your_table

输出:

VALUE ROUNDED_VALUE
----- -------------
 1.14           1.5
  1.6             2
  0.8             1
  7.5           7.5

如果你想从零四舍五入到最接近的 0.5(负数不是一回事),你可以使用:

SIGN(value) * CEIL(ABS(value)*2) / 2