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

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

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

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


VB.netのconsole(コンソール)プログラムの標準入力からの1行の読み込みは
console.readlineを使う。

この時は文字列として読み込まれるので、例えば数字を文字列ではなく整数値として読み込みたい場合は、
integer.parseでキャストして整数型(Integer型)に明示的に変換してやる。
num=integer.parse(str) とか

が、どうやら、integer.parseで明示的に型変換しなくても、VB.netは暗黙的に文字列型ー>数値型にキャストしてくれちゃうらしい。
Blogのほうでも、ちょっとしたテスト結果について書いたことがあるので、VB.netの文字列(数値)の数値型への暗黙的キャスト
をご参照下さい。

Module Module1

Sub Main()
Dim n As Integer, f As Single
f = Console.ReadLine
Console.WriteLine(f + 1)
n = f
Console.WriteLine(n)

End Sub

End Module


変数nはInteger型(整数型)、fはSingle型(単精度実数型)として宣言している。
Console.Readlineで読み込むと文字列型として読み込まれるが、
fに代入するときに自動的にSingle型に変換されている。
なので、次の行でf +1 という算術演算がごく当たり前のようにできている。

Single型のfをInteger型のnに代入すると、これも実数型から整数型に自動型変換(オートキャスト)されている。

以下の実行例を見て下さい。
この時の注意点として、実数が整数型にオートカストされる時、小数点以下は四捨五入されることです。
これはMS系Basicの流れを組むプログラム言語に共通した仕様のようです。
VBAのオートキャストについては整数型へのオートキャストを参照下さい。

c:\kasai\vbnet\autocast\autocast\bin\Debug>autocast
9.4
10.4
9

c:\kasai\vbnet\autocast\autocast\bin\Debug>autocast
9.5
10.5
10

c:\kasai\vbnet\autocast\autocast\bin\Debug>

負の数の場合は注意

c:\kasai\vbnet\autocast\autocast\bin\Debug>autocast
-0.5
0.5
0

c:\kasai\vbnet\autocast\autocast\bin\Debug>autocast
-0.4
0.6
0

c:\kasai\vbnet\autocast\autocast\bin\Debug>autocast
-0.9
0.1
-1

c:\kasai\vbnet\autocast\autocast\bin\Debug>autocast
-0.51
0.49
-1

c:\kasai\vbnet\autocast\autocast\bin\Debug>autocast
-0.500001
0.499999


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