как округлить десятичные дроби до верхнего значения - PullRequest
2 голосов
/ 28 декабря 2011

Я использую процедуру SQL Server 2008, у меня есть общее количество строк, разделенных на страницу, я хочу, чтобы, если результаты содержали любое десятичное значение, оно было округлено до его верхнего значения.

я использовал ниже:

SELECT FLOOR(@TOTAL / CAST(@PageSize AS FLOAT)) AS TOTALPAGES, @TOTAL AS TOTALROWS

где @total - это число с плавающей точкой, это не работает. я также попробовал ниже

SELECT ROUND(@TOTAL / CAST(@PageSize AS FLOAT),0) AS TOTALPAGES, @TOTAL AS TOTALROWS

Это работает только тогда, когда десятичное число> = 5, иначе оно не принимает верхнего значения.

Я хочу, чтобы, если результат равен 12,2, он должен вернуть 13

Ответы [ 2 ]

4 голосов
/ 28 декабря 2011

Вам необходимо использовать функцию CEILING. Не ROUND или FLOOR, как в вашем вопросе.

0 голосов
/ 29 июля 2013

Если у вас есть какие-либо десятичные значения, его следует округлить до его верхнего значения, используя CELLING, или же используйте Round, чтобы получить точные значения.

Example for CEILING:
SELECT CEILING($123.45), CEILING($-123.45), CEILING($0.0) or
select CEILING(1.12) it takes 2

Example for ROUND:
But in Round see
select round(1.12,1) it takes as 1.10.
select round(1.15,1) it takes as 1.20.

Надеюсь, это рассеет ваши сомнения

...