DECLARE @a int;
DECLARE @b int;
SET @a = 9;
SET @b = 2;
SELECT CEILING (@a/@b);
5 ではなく 4 として返されます。なぜですか?
編集:商が整数でない場合、次に小さい整数を取得したいと思います。
DECLARE @a int;
DECLARE @b int;
SET @a = 9;
SET @b = 2;
SELECT CEILING (@a/@b);
5 ではなく 4 として返されます。なぜですか?
編集:商が整数でない場合、次に小さい整数を取得したいと思います。
試す:
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 は整数除算を行います。したがって、SQL Server では 9/2 = 4 です。
整数の上限を取ることは同じ整数です。