パソコン活用研究5番街(Visual
Basic、Excel(VBA)、BASIC プログラミング研究)
整数型へのオートキャスト(自動型変換)
実数を整数型に代入すると、Basic, VB, VBAでは自動的に整数型に型変換(オートキャスト)されます。
このとき、MS系のBASIC, VB, VBAでは四捨五入されます。
ただし、C言語や他の言語では整数へのキャスト(型変換)で、小数部は切り捨てになることが多いので
注意が必要です。Cの場合は、兄弟サイト(パソコン活用研究C&C++であそぼ)のcast演算子とオートキャスト
をご参照下さい。
VB.netの場合は、VB.net 整数型へのオートキャストをご参照下さい。
(※)VBのデータ型については基本のデータ型とバリアント型をご参照下さい。
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活用研究目次