四捨五入・切り捨て・切り上げについての備忘録。
SQL SERVERのSQLを書いているとたまに「四捨五入」・「切り捨て」・「切り上げ」を取得時にしたい時があります。
本来生データの精度は、できる限る取得できる最大限の精度で保存したいものですが、使用する時にそこまで必要ない場合などありますし。
で、四捨五入・切り捨て・切り上げに使える関数ですが、
四捨五入には 「ROUND」
切り捨てには、「CEILING」
切り上げには、「FLOOR 」を使います。
ROUNDは、以下のようにでパラメターを3つ使います。
ROUND(四捨五入したい数値, 有効桁数[, 0 – 四捨五入、0 以外- 切捨て。 オプショナルでデフォルトは 0 ])
有効桁数は(0が1の位、1が小数点第1位、2が小数点第2位、3が小数点第3位、マイナス方向は-1であれば10の位、-2であれば100の位-3であれば1,000の位のようになります。
例えば、以下のようになります。
SELECT ROUND(1234.1234, -3) --> 1000.0000 SELECT ROUND(1234.1234, -2) --> 1200.0000 SELECT ROUND(1234.1234, -1) --> 1230.0000 SELECT ROUND(1234.1234, 0) --> 1234.0000 SELECT ROUND(1234.1234, 1) --> 1234.1000 SELECT ROUND(1234.1234, 2) --> 1234.1200 SELECT ROUND(1234.1234, 3) --> 1234.1230
3つめのパラメータを設定すると
SELECT ROUND(1555.1234, -3,0) --> 2000.0000 SELECT ROUND(1555.1234, -3,1) --> 1000.0000
FLOORとCEILINGはパラメターを1つだけで、そのまま整数値に切り捨て・切り上げしてくれます。
切り捨て(FLOOR)
例えば、以下のようになります。
SELECT FLOOR(1234.1234) --> 1234 SELECT FLOOR(1234.5678) --> 1234
FLOORとCEILINGは整数値に切り捨て・切り上げするので、小数点で切り上げ切り捨てを使うには、少し工夫が必要です。
まぁ、工夫と言っても桁を合わせてあげるだけですが。
例えば、以下のようになります。
SELECT FLOOR((1234.1234 * 10)) / 10 --> 1234.100000 SELECT FLOOR((1234.5678 * 100)) / 100 --> 1234.560000
切り上げ(CEILING)
SELECT CEILING(1234.1234) --> 1235 SELECT CEILING(1234.5678) --> 1235 SELECT CEILING(1234.1234 * 10) / 10 --> 1234.200000 SELECT CEILING(1234.5678 * 100) / 100 --> 1234.570000
以上、四捨五入・切り捨て・切り上げについての開発備忘録でした。