精度の低下を最小限に抑えるために、浮動小数点計算でいくつかのテストを行いました。ここで示したい現象に出くわし、うまくいけば説明が得られます。
私が書くとき
print 1.0 / (1.0 / 60.0)
結果は
60.0024000960
同じ式を書いて明示的にキャストするとfloat
print cast(1.0 as float) / (cast(1.0 as float) / cast(60.0 as float))
結果は
60
これまでは、小数点以下を含む数値リテラルは自動的float
に適切な精度の値として扱われると考えていました。にキャストするreal
と、 にキャストした場合と同じ結果が表示されfloat
ます。
- SQL Server が数値リテラルを評価する方法に関するドキュメントはありますか?
- これらのリテラルのデータ型は何ですか?
float
精度を上げるために本当にそれらをキャストする必要がありますか (私には皮肉のように聞こえます:)?- 式をキャストで乱雑にするよりも簡単な方法はありますか?