3.3 データ型の変換

      3.3 データ型の変換 はコメントを受け付けていません

運動の制御には必ずグローバル変数を使いますが、int型とfloat型の変数どちらを使うのか、よく考える必要があります。場合によってはプログラムの実行中に変数の型を変える必要が出てくる場合もあります。ここでは、それらの型を強制的に変換する型変換(キャスト)を覚えておきましょう。
すでに変数の節で述べましたが、次の場合にはエラーが出ます。

//右辺のfloat型の値が、左辺で宣言されているint型と合わない
int i = 5.5;

//int型は2147483647までの値しか格納できないので、格納できる範囲を超えている
int i = 2147483648;

ですので大原則は次のとおりです。
●変数に入れる値は、必ずその変数の型に合わせる。例: 整数値ならint、小数値ならfloat
●型の許容範囲を超えた値を入れてはいけない

3.3.1 int型とfloat型の変数を足してみる

それでは、次の場合はどうでしょう。

int i = 3;
float f = 0.6;
int result;

result = i + f;

println(result);

これは、エラーになります。int型のiとfloat型のfを足した値は3.6になり、float型になりますね。resultはint型なので当然の結果です。
それではresultをfloat型にしてみましょう。

int i = 3;
float f = 0.6;
float result;

result = i + f;

println(result);

結果は問題なく3.6が出力されます。3.6はfloat型なので、float型の変数に入れる分には問題ないからです。

3.3.2 型変換(キャスト)

それでは、本題の型変換です。キャストと呼ばれます。int型の変数とfloat型の変数を足した値をint型の変数に入れる場合には、次の関数を使います。

int(小数値)

ひとつポイントがあります。小数値をint()関数で変換すると、小数点以下が切り捨てになります。切り上げや四捨五入ではありません。
次の場合はどちらも5が出力されます。

int result1 = int(5.1);
int result2 = int(5.6);

println(result1);
println(result2);

それでは、型変換はどのようなケースで必要なのでしょうか。例えばrandom関数を使ってランダムに背景色を設定してみます。

int bkColor;  //背景色用の変数

size(400, 400);

bkColor = random(255);  //0.0~255.0までの値を返す(255.0は含まない)

background(bkColor);

すると、エラーになってしまいます。実は、random関数はこの場合0~255の値を返しますが、必ずfloat型の値になります。つまり正確には0.0~255.0の値なのです。当然、int型変数のbkColorに入れることはできません。ここで型変換です。int()で囲うとエラーが出なくなります。

int bkColor;  //背景色用の変数

size(400, 400);

bkColor = int(random(255));  //0~255までの値を返す(255は含まない)

background(bkColor);

型変換はfloat→intだけでなく、多くの型で変換可能です。しかし、通常はint()かfloat()を使用する場合が多いでしょう。

リスト3.3-a
使用頻度関数名機能
binary()2進数表記の文字列に変換
byte()int型の場合、0はfalse、それ以外はtrueに変換
byte()-128 ~ 127に変換
char()1文字に変換
float()小数値に変換
int()整数値に変換
str()文字列に変換
unbinary()2進数表記の文字列を数値に変換
hex()16進数表記の文字列に変換
unhex()16進数表記の文字列を数値に変換