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
。