Skip to main content

How to Floor a number to 0.05 increments in T-SQL

Say you've got a number like 72.26 and you want to round it or floor to the nearest 0.05


The first thing to do is divide it by the round number.  

  • For example, if you want 72.26 rounded to the nearest 0.05, this will show how many 0.05's there are in the number 
                72.26 / 0.05 = 1,445.2

                 From there, round or floor as needed

            eg,             

    • SELECT ROUND( 72.26 / 0.05  , 0 )   or 
    • SELECT FLOOR( 72.26 / 0.05  , 0 )
            Results in 1445.0


Then, multiply it by the round number 

  • This returns you to the original value, less then remainder (or to the next increment if it rounded up) 
        eg 
    • SELECT 0.05 * ROUND( 72.26 / 0.05  , 0 )  
      • Results in 72.25

Demonstration Code 

DECLARE @SourceValues TABLE
(
    [TestValue] DECIMAL(4, 2)
);

DECLARE @Increment DECIMAL(4, 2) = 0.0;

WHILE @Increment <= 0.1
BEGIN
    INSERT INTO @SourceValues
    VALUES
    (72 + @Increment);

    SET @Increment = @Increment + 0.01;
END;

SELECT [TestValue]
  , 0.05 * ROUND([TestValue] / 0.05, 0) [RoundValue]
  , 0.05 * FLOOR([TestValue] / 0.05) [FloorValue]
FROM @SourceValues;



Result
Original ValueRounded ValueFloor Value
72.0072.0000000072.00
72.0172.0000000072.00
72.0272.0000000072.00
72.0372.0500000072.00
72.0472.0500000072.00
72.0572.0500000072.05
72.0672.0500000072.05
72.0772.0500000072.05
72.0872.1000000072.05
72.0972.1000000072.05
72.1072.1000000072.10

Comments

Popular posts from this blog

Javascript Form Validation

It's real simple. All you need to do is call a javascript function in a html  " onsubmit " in the form tag as a javascript return, like this       <form method="post" action="dosomething.php" onsubmit="return validateForm();"> If the code completes ok, the form is then sent to the page listed in "action" http://www.w3schools.com/js/js_form_validation.asp If the function specified in the onsubmit returns false, then the form is not sent to the page mentioned in action.