代码之家  ›  专栏  ›  技术社区  ›  Doonie Darkoo

把数字四舍五入到60

  •  3
  • Doonie Darkoo  · 技术社区  · 6 年前

    我怎样才能把一个数四舍五入到 60 例如,如果我有号码 61 ,它应该是圆形的 60 如果数字是 150 120 如果是 59 它应该逐渐恢复到 zero .

    5 回复  |  直到 6 年前
        1
  •  4
  •   Paweł Dyl    6 年前

    SELECT 61/60*60 --result: 60
    SELECT 59/60*60 --result: 0
    

    数字必须是int(bigint,smallint,tinyint)。如果不是,请使用CAST/CONVERT。

    另请参见 Division (Transact SQL) :

    如果整数被除数除以整数除数,结果是

        2
  •  2
  •   john McTighe    6 年前

    很难看,但很管用:

    SELECT (125 / 60 ) * 60
    
        3
  •  2
  •   MarkD    6 年前

    你以为这就是你要找的吗

    DECLARE @TestVal INT = 59
    SELECT @TestVal - (@TestVal % 60)
    
    SET @TestVal = 61
    SELECT @TestVal - (@TestVal % 60)
    
    SET @TestVal = 150
    SELECT @TestVal - (@TestVal % 60)
    
        4
  •  1
  •   Tanner    6 年前

    modulus 运算符得到除60的余数,然后减去:

    返回一个数除以另一个数的余数。

    例如:

    declare @valueToTest int = 150
    select @valueToTest - (@valueToTest % 60) as result
    
    -- result: 120
    

    @valueToTest 乘以60,然后从原始值中减去

        5
  •  0
  •   Cato    6 年前

    我更喜欢地板而不是整数除法,这是地板的用途。例子

    DECLARE @YourVal DECIMAL(10,4) = 220.1234;
    SELECT @YourVal / 60 * 60, FLOOR(@YourVal / 60) * 60;