ばかげた質問をして申し訳ありませんが、これは私を困惑させました。
SELECT
81234 / 160000 * 100 AS Try1,
CAST((81234 / 160000 * 100) AS float) AS Try2
答えは 50.77125 ですが、どちらの値もゼロを返します。どうしたの?
ありがとう、
ばかげた質問をして申し訳ありませんが、これは私を困惑させました。
SELECT
81234 / 160000 * 100 AS Try1,
CAST((81234 / 160000 * 100) AS float) AS Try2
答えは 50.77125 ですが、どちらの値もゼロを返します。どうしたの?
ありがとう、
小数点を使用してみてください。
何かのようなもの
SELECT
81234 / 160000 * 100 AS Try1,
CAST((81234 / 160000 * 100) AS float) AS Try2,
81234. / 160000. * 100. AS Try3
/ (除算)から(Transact-SQL)
整数の被除数が整数の除数で除算される場合、結果は、結果の小数部分が切り捨てられた整数になります。
あなたはintによる除算を実装しています
これを試して:
SELECT
cast(81234 as float) / cast(160000 as float) * 100
また
SELECT
81234.00 / 160000.00 * 100
これを試して
SELECT
81234.00 / 160000 * 100 AS Try1,
CAST((81234.00 / 160000 * 100) AS float) AS Try2
整数と見なされる数値を除算しています。したがって、2 つの小数を追加することにより、10 進数に変換され、小数が表示されます。
あなたの場合、除算 81234 / 160000 は 0 になり、100 を掛けても 0 のままです。
以下のようにクエリを変更します
SELECT
81234.00 / 160000 * 100 AS Try1,
CAST((81234.00 / 160000 * 100) AS float) AS Try2
** 81234.00 / 160000 は手動で sql を介して 0.5077125 を返します。整数除算と見なされるため、値 0 が返されます。