【问题标题】:Modified ROUND UP function in OracleOracle中修改ROUND UP函数
【发布时间】:2017-11-25 17:37:20
【问题描述】:

我有特殊的要求,我想以以下方式对数字进行 向上 -

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

即最接近 0.5 的倍数。

有没有办法做到这一点?

最好的问候

【问题讨论】:

  • OK - 所以你不需要 ROUND 到最接近的 0.5,而是 ROUND UP 到最接近的 0.5?这就是 MT0 所展示的。
  • 这不是“四舍五入”——你想要一个天花板。

标签: sql oracle oracle11g oracle10g


【解决方案1】:

这是一种方法:

select floor( val * 2 + 1) / 2

【讨论】:

  • 7.5 到 7.5 失败
  • 7.5 不在原始范围内。但似乎很明显(至少对我来说)它不应该四舍五入到 8
【解决方案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

【讨论】:

  • 完美!...非常感谢您的即时解决方案 :)
猜你喜欢
  • 1970-01-01
  • 2016-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多