Fix関数とInt関数
Fix関数とInt関数は引数の小数点以下を切り捨てて整数を返します。Fix関数は小数点以下を単純に切り捨てて整数を返します。
Int関数は引数の値が整数であればその整数を返し、小数点以下があればより小さい直近の整数を返します。
実際の値をFix関数とInt関数で実行した場合に返される値は以下のようになります。
赤文字はFix関数とInt関数で異なる結果が返される個所です。
値 | -2 | -1.5 | -1 | -0.5 | 0 | 0.5 | 1 | 1.5 | 2 |
---|---|---|---|---|---|---|---|---|---|
Fix関数 | -2 | -1 | -1 | 0 | 0 | 0 | 1 | 1 | 2 |
Int関数 | -2 | -2 | -1 | -1 | 0 | 0 | 1 | 1 | 2 |
Int関数の挙動の覚え方
Fix関数は小数点が無くなるだけなので覚えやすいのですが、Int関数はちょっとややこしいです。
ネットや書籍でも「マイナス値の場合は引数の負数以下の最大の整数を返す」というような説明が多いようです。
しかし実際に動作を確認してみると、引数がプラスやマイナスに関係なく、小数点以下がある場合はより小さい直近の整数を返していることが分かります。
そこで私自身は「小数点がある場合はちょっと左に移動」と覚えています。
左に移動、ってのは左がマイナスであることが前提ですが、意味が分かればOKなのでこれで覚えています。
構文
Function Fix(Number)
Function Int(Number)
Number | 整数に変換する数値を指定します。 |
サンプルコード
小数点以下を持つ値と持たない整数値の場合にどのように変換されるのかを出力するサンプルです。
1 2 3 4 5 6 7 8 9 10 11 |
Sub FixIntTest() Debug.Print Fix(2) & " " & Int(2) '// 2 2 Debug.Print Fix(1.5) & " " & Int(1.5) '// 1 1 Debug.Print Fix(1) & " " & Int(1) '// 1 1 Debug.Print Fix(0.5) & " " & Int(0.5) '// 0 0 Debug.Print Fix(0) & " " & Int(0) '// 0 0 Debug.Print Fix(-0.5) & " " & Int(-0.5) '// 0 -1 Debug.Print Fix(-1) & " " & Int(-1) '// -1 -1 Debug.Print Fix(-1.5) & " " & Int(-1.5) '// -1 -2 Debug.Print Fix(-2) & " " & Int(-2) '// -2 -2 End Sub |