Nanashi-soft○プログラマ専用○Unityでゲーム開発○
◇Unityでゲーム開発 -JavaScriptの基本:キャスト-
キャスト(型変換)は自動的におこなわれるっぽいです
そして,範囲を超えるとエラーになってスクリプトが停止します
●数値同士のキャスト
例)符号付8bit整数を,符号付32bit整数に代入する
var a : sbyte = 10;
var b : int = a;
例)符号付8bit整数を,範囲を超えた演算をしながら,符号付32bit整数に代入する
var a : sbyte = 127;
var b : int = a + 10;
※きちんと137になる
例)符号付32bit整数を,符号付8bit整数に代入する
var a : int = 10;
var b : sbyte = a;
例)符号付32bit整数を,符号付8bit整数に代入する。範囲を超えた値の場合
var a : int = 137;
var b : sbyte = a;
※OverflowException: Number overflow.エラーになる
例)符号付32bit整数を符号付32bit不動小数点数に代入する
var a : int = 1280;
var b : float = a;
演算途中でfloat型にしたい場合
var a : int = 1280;
var b : int = 13;
var c : float = parseFloat(a) / parseFloat(b);
※a/bとだけ記述した場合は小数点以下が切り捨てられる
例)符号付32bit不動小数点数を,符号付32bit整数に代入する
var a : float = 0.1;
var b : int = a;
※結果は0になる
特殊な演算には Mathfと言うオリジナルクラスが使用できます
切り上げ
var a : float = 0.1;
var b : int = Mathf.Ceil(a);
※結果は1になる
四捨五入
var a : float = 0.1;
var b : int = Mathf.Round(a);
※結果は0になる
●数値を文字列に変換
例)符号付32bit整数を,文字列に変換
var a : int = 10;
var b : String = "" + a;
※String(a)という書き方は使用出来なかった
var a : int = 10;
var b : String = "" + a + 10;
※結果は「1020」になる(文字列でね)
var a : int = 10;
var b : String = "" + a - 10;
※BCE0051: Operator '-' cannot be used with a left hand side of type 'String'
and a right hand side of type 'int'.エラーになる
var a : int = 10;
var b : String = "" + (a - 10);
※結果は「0」になる(文字列でね)
●文字列を数値に変換
例)文字列を,符号付32bit整数に変換
var a : String = "10";
var b : int = parseInt(a);
var a : String = "10";
var b : int = parseInt(a + 10);
※結果は「1020」になる(数値でね)
var a : String = "10";
var b : int = parseInt(a) + 10;
※結果は「20」になる(数値でね)
var a : String = "10a";
var b : int = parseInt(a);
※FormatException: Input string was not in the correct format
System.Int32.Parse (System.String s)エラーになる
var a : String = "10+10";
var b : int = parseInt(a);
※FormatException: Input string was not in the correct format
System.Int32.Parse (System.String s)エラーになる
例)文字列を,符号付32bit不動小数点数に変換
var a : String = "0.1";
var b : float = parseFloat(a);
例)文字列を,符号付8bit整数に変換
var a : String = "10";
var b : sbyte = parseInt(a);
例)文字列を,符号付8bit整数に変換。範囲を超えた値の場合
var a : String = "137";
var b : sbyte = parseInt(a);
OverflowException: Number overflow.エラーになる
●intをbyte型に丸め込んで代入
var a : int = 666;
var b : byte;
if(a < 0){
b = 0;
}else if(255 < a){
b = 255;
}else{
b = a;
}
○TOP○プログラマ専用○Unityでゲーム開発○