1) select CAST(FLOOR(2 * 3.69) / 2 AS decimal(2, 1))
最初のケースを処理します-
数値を最も近い0.5
に丸める場合は注意してください 大きくなる可能性があります(例:333.69
=> 333.5
)、必ずdecimal
を追加してください キャスト時の精度(例:select CAST(FLOOR(2 * 3.69) / 2 AS decimal(10, 1))
)、またはオーバーフローエラーが発生する可能性があります:
Msg 8115, Level 16, State 8, Line 1
Arithmetic overflow error converting numeric to data type numeric.
精度を上げても、最終的な結果には影響しません(つまり、select CAST(FLOOR(2 * 3.69) / 2 AS decimal(10, 1))
およびselect CAST(FLOOR(2 * 3.69) / 2 AS decimal(2, 1))
どちらも3.5
を生成します );ただし、四捨五入する数値が常に小さくなると無駄になります。
T-SQLの例を含むオンラインリファレンスを利用できますFLOOR
、 CAST
、および decimal
>
助けるために。
2) select ROUND(142600, -3)
2番目のケースを処理します。
同様のオンラインリファレンスがT-SQLROUND
。