CEILING возвращает результат FLOOR - SQL SERVER 2008 R2

DECLARE @a int;
DECLARE @b int;

SET @a = 9;
SET @b = 2;

SELECT CEILING (@a/@b);

Возвращается как 4 вместо 5. Почему?

Изменить: я хотел бы получить следующее наименьшее целое число, если частное не целое число.

3 ответа

Решение

Пытаться:

SELECT CEILING (@a/CAST(@b AS float))

И посмотрим NULLIF(@b,0) также, чтобы избежать ошибки деления на ноль.

После деления 9 на 2 десятичная дробь усекается до целой части - 4, а не округляется до 5. Попробуйте:

SELECT 9/2

Resilt 4. Тогда CEILING(4) = 4

Чтобы получить следующее целое число, объявите переменные как типы данных, которые могут обрабатывать десятичную часть: NUMERIC,FLOAT, REAL,

SQL Server выполняет целочисленное деление. Так что 9/2 = 4 в SQL Server.

Взятие потолка целого числа является тем же самым целым числом.

Другие вопросы по тегам