如何将数字四舍五入到十(总是向上)



我来找你解决一个问题,我花了将近两天的时间,但仍然找不到解决方案。我有一项关于数学计算的任务。我有一条规则,你应该总是把结果四舍五入到十(总是最上面(。示例:结果为1必须四舍五入到10,结果为2必须四舍五入到10。

我知道四舍五入有三个"基本"函数。第一个是上限,我对此很感兴趣,但上限并不总是按我希望的方式工作。例如,对于int值,它总是这个数字,如果是90,它将返回90,如果是17,则返回17,依此类推。这种情况的代码如下。

SELECT CEILING(91)

我们还有一个用于舍入的函数,但我找不到正确的参数,无法始终对数字进行舍入。正的最大值为1,z的其余部分指示我的值。例如,对于91,它将返回90(带-1个参数(,对于96,它将是100(带-1的参数(,但我希望这个91变成100。

SELECT ROUND(91, -1)

因此,我想尝试对地板做点什么,甚至做一些数学计算,但从长远来看,还是有一些错误的。它将是工作叉91(返回100(,但对于90,它仍然是100,而它应该是90。

SELECT FLOOR(90/10) * 10 + 10 AS RoundValue

有人知道我该怎么做吗?不幸的是,我使用的编译器不允许我在开始时使用IF语法,查询必须始终以select开头。

CEILING()看起来是正确的方法,但我们需要处理整数除法。这似乎可以做到你想要的:

select val, ceiling(val / 10.0) * 10 as roundvalue
from (values (1), (10), (15), (90), (91), (95), (99)) t(val)

收益率

val|roundvalue--:|--------:1 | 1010 | 1015 | 2090|9091 | 10095 | 10099 | 100

您可以调整round函数以获得所需的值,如下所示:

select  round(val+4, -1) as roundvalue
from (values (1), (10), (15), (90), (91), (95), (99)) t(val)

DB<gt;Fiddle演示

最新更新