修改 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
我有特殊要求,我想以下面的方式将 向上 个数字四舍五入 -
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