在*SQL Server中将***舍入到最接近的100

jos*_*ley 40 sql-server math rounding

是否可以很容易地圆这个数字高达到最近的100 SQL Server(或1000,500,200等)?

所以:

720 - > 800
790 - > 800
1401 - > 1500

Gra*_*ray 51

以下应该有效.在阅读了你的问题后,我不确定你想要100回归.为此100返回100.

select floor((X + 99) / 100) * 100;
Run Code Online (Sandbox Code Playgroud)

这给出了以下结果:

0 -> 0
1 -> 100
99 -> 100
100 -> 100
101 -> 200
Run Code Online (Sandbox Code Playgroud)

  • 抱歉,这个答案似乎只适用于整数值。X=100.25 仍然给出 100,而不是四舍五入到 200。@Krock 的上限答案对于浮点数和小数更有效 (3认同)

小智 28

如需四舍五入到最接近的千位数,请尝试以下方法: -

select round(YourValue, -3)
Run Code Online (Sandbox Code Playgroud)

干杯!!!!!

  • 这四舍五入,而不是向上。试试吧。选择一轮(1005,-3)-结果:1000 (2认同)
  • 正如有人指出的那样,这并不总是按照指定的问题进行四舍五入。 (2认同)

kro*_*ock 16

一种选择是使用CEILING()函数,如下所示:

SELECT CEILING(@value/100.0) * 100
Run Code Online (Sandbox Code Playgroud)

您可能需要先根据类型将值转换为小数.

  • @terry这里的除法和乘法只是基于数学,理解这一点的唯一真正方法可能是通过例子。上限之所以有效,是因为它向上舍入到最接近的整数。下面是一个简单的示例:您想要将 149 舍入为 200。149/100 = 1.49,上限会将其舍入到最接近的 INT,即 2。然后将 2 乘以 100,中提琴得到 200。这个数学概念适用于 ANY您想要舍入到的固定间隔。如果您想向上舍入到最接近的 8:149/8=18.625,将其上限为 19,则 19x8 = 152。152 是向上舍入的最接近的 8 区间!:) (2认同)

小智 8

使用CEILING函数将数字向上舍入

DECLARE @Number DECIMAL, @RoundUp DECIMAL
SET @RoundUp = 100
SET @Number = 720
SELECT CEILING(@Number/@RoundUp)*@RoundUp
Run Code Online (Sandbox Code Playgroud)