2013年7月26日金曜日

SQL Server で切り捨てを行う場合

<結論>
ROUND を使う

ROUND ( numeric_expression , length [ ,function ] )
引数
numeric_expression
bit 型を除く、真数型または概数型の式を指定します。
length
numeric_expression を丸める有効桁数です。 length は tinyint 型、smallint 型、または int 型の式である必要があります。 length に正の値を指定した場合、numeric_expression は length で指定した小数点以下桁数に丸められます。 length に負の値を指定した場合、numeric_expression は length で指定した小数点の左側の位置で丸められます。
function
実行する操作の修理です。 function は、tinyint 型、smallint 型、または int 型のいずれかである必要があります。 function を省略した場合、または 0 (既定値) を指定した場合、numeric_expression は丸められます。 0 以外の値を指定した場合、numeric_expression は切り捨てられます。

SELECT ROUND(45.45, 0, 1);
SELECT ROUND(-45.45, 0, 1);

結果
45.00
-45.00

ROUND は四捨五入する時に使う関数だが、
第3パラメータに 0 以外を指定すると「切り捨て」できる。
また、値が正か負に関係なく、第2パラメータで指定された少数点以下で「切り捨て」られる。
第2パラメータをマイナス指定すると小数点から左側で切り捨てされる。

切り捨てに FLOOR を使っていたが 金額で相殺する場合の消費税計算では負の値は切上げられるので誤差が出るため使えない。
FLOOR
SELECT FLOOR(45.45);
SELECT FLOOR(-45.45);
結果
45.00
-46.00

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。