oraclesql中的自定义舍入逻辑

oraclesql中的自定义舍入逻辑,sql,oracle,rounding,Sql,Oracle,Rounding,大家好,我正在尝试创建一个自定义逻辑,用于按照规则中的规定对小数进行四舍五入 该规则规定,任何值介于.01到.05之间的十进制数都应具有.05值。介于.06和.09之间的任何值都应等于.10 比如说 1.05 => 1.05 1.84 => 1.85 1.06 => 1.10 1.79 => 1.80 我试着使用oracle网站上指定的公式。但它不起作用,请参见下面的代码 select round(1.05 * power(10,2) + .05) * power(1

大家好,我正在尝试创建一个自定义逻辑,用于按照规则中的规定对小数进行四舍五入

该规则规定,任何值介于.01到.05之间的十进制数都应具有.05值。介于.06和.09之间的任何值都应等于.10

比如说

1.05 => 1.05
1.84 => 1.85
1.06 => 1.10
1.79 => 1.80
我试着使用oracle网站上指定的公式。但它不起作用,请参见下面的代码

select 
round(1.05 * power(10,2) + .05) * power(10,-2) as Rounding1
, round(1.84 * power(10,2) + .05) * power(10,-2) as Rounding2
, round(1.06 * power(10,2) + .05) * power(10,-2) as Rounding3
, round(1.79 * power(10,2) + .05) * power(10,-2) as Rounding4
from dual;

关于如何实现这一点有什么想法吗?

我认为这一逻辑符合您的要求:

select ceil(num * 20) / 20 from tablename 

ceil(value*20)/20
满足您的要求汉克斯·沃尔夫本可以对您的答案进行投票……谢谢戈登,是的,它的工作原理与沃尔夫·沃尔夫的答案类似。你怎么知道你会把它除以20?@dimas。因为第二个小数位可以有两个值(第一个小数位为2*10)。我没有看到评论;我试着测试代码,以确保它适用于您的案例。是的,我试着针对不同的场景进行测试,似乎工作正常。谢谢你的帮助@戈登林诺夫,谢谢。我怀疑我们能否正确使用圆函数。两者都会给出相同的值,对吗?@AravindhanR。你可以试试。可能会有微妙的不同。