6
DECLARE @a int;
DECLARE @b int;

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

SELECT CEILING (@a/@b);

5 ではなく 4 として返されます。なぜですか?

編集:商が整数でない場合、次に小さい整数を取得したいと思います。

4

3 に答える 3

8

試す:

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

NULLIF(@b,0)また、ゼロによる除算エラーを回避することも考慮してください。

于 2014-08-27T10:59:48.447 に答える
4

9 を 2 で除算した後、小数は整数部分に切り捨てられます - 4 であり、 5 に丸められません。試してください:

SELECT 9/2

Resilt は 4 です。CEILING(4) = 4

次の整数を取得するには、変数を小数部分を処理できるデータ型として宣言します: NUMERICFLOATREAL.

于 2014-08-27T10:57:26.273 に答える
3

SQL Server は整数除算を行います。したがって、SQL Server では 9/2 = 4 です。

整数の上限を取ることは同じ整数です。

于 2014-08-27T10:57:43.990 に答える