パソコン活用研究5番街(Visual Basic、Excel(VBA)、BASIC プログラミング研究)

整数型へのオートキャスト(自動型変換)

実数を整数型に代入すると、Basic, VB, VBAでは自動的に整数型に型変換(オートキャスト)されます。

このとき、MS系のBASIC, VB, VBAでは四捨五入されます。
ただし、C言語や他の言語では整数へのキャスト(型変換)で、小数部は切り捨てになることが多いので
注意が必要です。Cの場合は、兄弟サイト(パソコン活用研究C&C++であそぼ)のcast演算子とオートキャスト
をご参照下さい。
VB.netの場合は、VB.net 整数型へのオートキャストをご参照下さい。

1 BASIC
以下はN-88Basic(エミュレータ上)の例です。
9.4を整数型にキャストすると9、9.5をキャストすると10になってます。



2 EXCEL

Cellの書式設定で、小数点以下の桁数を0にした場合も小数点以下は四捨五入される。



9.4を入力


四捨五入されて9になる。


9.5を入力してみる


四捨五入されて10になる



3 VBA

VBAでは以下のようなコードでテストしてみます。


Sub test()
Dim n1 As Integer, n2 As Integer, n3 As Integer, n, m As Single
n = InputBox("test")
MsgBox (VarType(n)) '@
m = n / 10
MsgBox (m) 'A
n1 = n / 10
MsgBox (n1) 'B
n2 = Int(n / 10)
MsgBox (n2) 'C
n3 = n \ 10
MsgBox (n3) 'D
Cells(1, 1).Value = n / 10

End Sub

変数をn1,n2,n3は整数型(Integer)で宣言。nはバリアント型、mは単精度実数(Single)で宣言
@ Vartypeは変数の型を返す関数。ここではInputBoxで入力された変数nの型を確認します。
A nを10で割った結果を単精度実数型のmに代入します。
B nを10で割った結果を整数型のn1に代入します。
C nを10で割った結果を、int関数で小数部を切捨てし整数型のn2に代入します。
D nを整数割り算演算子の\を使って10で割る。その結果を整数型のn3に代入。
  整数割り算の\は、小数点以下を切捨てし、整数部の値を商として求めます。

実行結果をまとめると以下の通り。

入力値 n 9.4 9.5
@Vartype 8 8
Am = n / 10 9.4 9.5
Bn1 = n / 10 9 10
Cn2 = Int(n / 10) 9 9
Dn3 = n \ 10 9 9

VarTypeが8ということはInputBoxで入力された変数nは文字列型(String)として扱われていることを示します。
それ以降は文字列型nを10で割っていますが、nは自動的に数値型にキャストされて演算されています。
割り算の場合は、自動的に実数型のキャストされます。

Bの結果をみると、整数型にキャストする際に、実数は四捨五入されていることがわかります。
C,Dは当然いずれも9になります。

実際にテストした時の動画(説明付) ※前半はEXCELのセルへの入力、後半がVBAのテストです。
EXCELの整数の丸め方



TopPage > Visual BasIc&Excel活用研究目次