0

これが私が実行しているクエリです

Select (100/18)*18

私が得た答えは90です。それぞれの数値を小数として宣言しようとしましたが、値を取得しました100.0008が、変数を浮動小数点数として計算すると、答えは「100」で正しいので、SQLが計算する理由は誰にもわかりません。このような?

4

4 に答える 4

7

それは最初にparanthesisを解決するので

それで

Select (100/18)*18

will(100/18)= 5.555555ただし、両方の数値をintと見なすため、結果がintとしてキャストされるため、5が返されます。

だから今5*18 = 90

正しい結果が必要な場合は、代わりにこれを実行してくださいSelect (100*18)/18

于 2012-10-30T12:42:16.720 に答える
2

目的の結果を得るには、次のような方法を試してください。

Select CEILING((100/18.0)*18)

あなたがこれをするとき、

Select (100/18)*18

SQL Serverは、操作を整数除算と見なし、5.55555の5つのインストールとして100/18を選択します。

于 2012-10-30T12:52:30.807 に答える
1

数字を10進数で表現してみてください

SELECT (100.0/18)*18

SELECT ROUND((100.0/18)*18,2)

..。

于 2012-10-30T12:51:41.447 に答える
0

あなたはこれを試すことができます

select abs(18*100/18)
于 2012-10-30T12:42:53.367 に答える