Int関数とFix関数の違い
VBAには小数点以下を切り捨てて整数にする関数が2つあります。
それが Int関数とFix関数です。
両者は似ていますが、負の数に対する動作に違いがあります。
動作の違い
各関数は以下のように動きます。
関数 | 動作 |
---|---|
Int(数値) | 数値の小数点以下を、最も近い小さい方の整数に切り捨てる |
Fix(数値) | 数値の小数点以下切り捨てる |
Int関数の最も近い小さい方の整数に切り捨てて返す
という点がポイントです。
こちらの例では1.23
と-1.23
という数値に対してInt関数とFix関数を使用しています。
Sub Sample()
Debug.Print "Int(1.23) : " & Int(1.23)
Debug.Print "Fix(1.23) : " & Fix(1.23)
Debug.Print "Int(-1.23) : " & Int(-1.23)
Debug.Print "Fix(-1.23) : " & Fix(-1.23)
End Sub
▶ 出力結果
Int(1.23) : 1
Fix(1.23) : 1
Int(-1.23) : -2
Fix(-1.23) : -1
Fix関数の結果が引数の小数点以下を切り捨てる事で1
,-1
という結果が返っているのに対し、
Int関数では引数が-1.23
の場合の結果が異なっています。
これはInt関数が単純に小数点以下を切り捨てるのではなく最も近い小さい方の整数に切り捨てて返す
という仕様のため、
-1.23
に最も近い小さい方の整数の-2
が返ってきます。
比較
引数 | Intの結果 | Fixの結果 |
---|---|---|
正の整数 | 引数と同じ | 引数と同じ |
正の少数 | 引数の整数部 | 引数の整数部 |
負の整数 | 引数と同じ | 引数と同じ |
負の少数 | 引数の整数部-1 | 引数の整数部 |
0 | 0 | 0 |
結論
- 正の数値に対しては、同じ結果となる
- 負の数値に対しては、Intはより小さい整数、FIXは少数部を切り捨てた数値が返る
どちらを使うかは、マイナスの数をどう扱いたいかで決めると良いでしょう。
その他のVBA関数
【Excel VBA】VBAでよく使う関数一覧&基本の使い方