Flashゲームプログラミング講座 for ActionScript3.0

 

数値型について

 


■数値型について

 
■数値のデータ型について
 
数値は、プリミティブ型となります。
 
基本的で単純なデータ型です。
 
■数値型の種類について
 
数値型には、以下の種類があります。
 
説明
Number64bit浮動小数点数(IEEE 754)
uint32bit整数値(符号なし)
int32bit整数値(符号あり)
 
■論理演算の精度について(Number 型の場合)
 
論理演算や、シフト演算を行った場合、一時的に、32bit整数値として計算されます。
 
符号の解釈は、使用した演算子によって変化します。
 
論理演算は、uint と int 型を、使い分けて計算した方がいいでしょう。
 

■Number クラスについて

 
Number クラスは、数値用のクラスです。
 
■数値から Number クラスのプロパティやメソッドを利用する
 
数値の後に、ドット演算子や配列アクセス演算子を記述すると、その瞬間だけ Number オブジェクトに変換されます。
 
数値に対して、あたかも Number クラスのプロパティやメソッドが存在するかのように、アクセスできます。
 
 

 

数値を作成する

 
 


■Number コンストラクタについて

 
Number コンストラクタは、使用する事は無いでしょう。
 
数値を作成する場合は、数値リテラルを使用します。
 
Number コンストラクタを使用すると、オブジェクトではなく、数値を生成する事ができます。
 
ActionScript 2.0 以前の場合は、こちらで解説しています。
 
new Number ( 数値 ) :Number
第01引数(略可)Number数値を指定する。
戻り値 Number第01引数で指定した数値が得られる。
 
数値を作成する

// ------------------------------------------------------------
// 数値を作成する
// ------------------------------------------------------------
var value:Number = new Number(123);

// 出力テスト
trace(typeof(value)); // "number"
trace(value); // 123
 

■数値リテラルについて

 
数値を作成するには、数値リテラルを使用します。
 
整数小数指数の表現が可能です。
 
整数を作成する

// 整数を作成する
var value0:uint = 123;
var value1:int  = -987;
 
小数を作成する

// 小数を作成する
var value0:Number = 123.456;
var value1:Number = -0.987;
 
指数を作成する

// 指数を作成する
var value0:Number = 0.12345e+4;
var value1:Number = -12345e-4;
 
■ヘキサリテラルについて
 
最先頭に『 0x 』 と記述した場合、16 進数表記が可能です。
 
16 進数表記で数値を作成する

// 16 進数表記で数値を作成する
var value0:Number = 0x00000012;
var value1:Number = 0x89abcedf;

// 出力テスト
trace(value0); // 18
trace(value1); // 2309738207
 


 

Number クラスのプロパティについて

 


■Number クラスのプロパティ


Number クラスには、以下の定数プロパティがあります。
 
 
プロパティ 説明
Number.MIN_VALUE Number 表現可能な最小値(64bit浮動小数点数の最小値)
Number.MAX_VALUE Number 表現可能な最大値(64bit浮動小数点数の最大値)
Number.NEGATIVE_INFINITY Number 負の無限大を意味する定数(-Infinity 値)
Number.POSITIVE_INFINITY Number 正の無限大を意味する定数( Infinity 値)
Number.NaN Number 非数(数値以外)を意味する定数(NaN 値)
 
■Number.NaN 定数について
 
Number.NaN は、非数(NaN 値)が格納されている定数です。
 
非数(Not a Number)は、数値以外のデータという意味があります。
 
NaN 値自体は、数値型の一種となります。
 
大抵の場合、数値に関する演算に失敗した結果として得られます。
 
非数は、比較演算子『 == 』を使って調べる事はできません。
 
任意のデータが、非数(数値以外)であるか調べたい場合、isNaN() 関数を使用します。
 
非数(数値以外)であるか調べる。

// ------------------------------------------------------------
// 非数は比較できない
// ------------------------------------------------------------
var result0:Boolean = (Number.NaN === NaN);
trace(result0); // false

// ------------------------------------------------------------
// 非数であるか調べる
// ------------------------------------------------------------
var result1:Boolean = isNaN(Number.NaN);
trace(result1); // true
 


 

Number クラスのメソッドについて

 


■Number クラスのメソッド一覧


Number クラスには、以下のメソッドがあります。
 
メソッド 説明
toString() 数値を、任意進数表記の文字列に変換する。
toExponential() 数値を、指数表記の文字列に変換する。
toFixed() 数値を、小数表記の文字列に変換する。(0埋めあり)
toPrecision() 数値を、指定桁数の精度に丸めた文字列に変換する。(0埋めあり)
 
 


■toString() メソッド

 
数値を、任意進数表記の文字列に変換するには、toString() メソッドを使用します。
 
Number.toString ( n 進数 ) :String
第01引数(略可)Number2 ~ 36 までの任意の進数を指定。省略した場合 10。
戻り値 String進数表記に変換した文字列が得られる。
 
■取得例
 
数値を、任意の進数表記に変換する

// 数値を作成する
var value:Number = 123;

// 2進数表記
trace( value.toString(2)  ); // "1111011"

// 8進数表記
trace( value.toString(8)  ); // "173"

// 10進数表記
trace( value.toString(10) ); // "123"

// 16進数表記
trace( value.toString(16) ); // "7b"
 

■toExponential() メソッド

 
数値を、指数表記の文字列に変換するには、toExponential() メソッドを使用します。
 
小数の桁が足りない場合、切り捨てられます。
 
小数の桁が余る場合、0 で埋められます。
 
Number.toExponential ( 小数の桁数 ) :String
第01引数(略可)uint0 ~ 20 までの小数の桁数を指定。省略した場合、0
戻り値 String指数表記に変換した文字列が得られる。
 
■取得例
 
数値を、指数表記に変換する

// ------------------------------------------------------------
// 数値を作成する
// ------------------------------------------------------------
var value:Number = 123456789;

// ------------------------------------------------------------
// 指数表記に変換する(引数省略)
// ------------------------------------------------------------
trace( value.toExponential()   ); // "1e+8"

// ------------------------------------------------------------
// 指数表記に変換する(引数指定)
// ------------------------------------------------------------
trace( value.toExponential(1)  ); // "1.2e+8"
trace( value.toExponential(5)  ); // "1.23456e+8"
trace( value.toExponential(10) ); // "1.2345678900e+8"
trace( value.toExponential(15) ); // "1.234567890000000e+8"
trace( value.toExponential(20) ); // "1.23456789000000000000e+8"
 

■toFixed() メソッド

 
数値を、小数表記の文字列に変換するには、toFixed() メソッドを使用します。
 
小数の桁が足りない場合、近似値が得られます。
 
小数の桁が余る場合、0 で埋められます。
 
Number.toFixed ( 小数の桁数 ) :String
第01引数(略可)uint0 ~ 20 までの小数の桁数を指定。省略した場合 0
戻り値 String小数表記に変換した文字列が得られる。
 
■取得例
 
数値を、指数表記に変換する

// ------------------------------------------------------------
// 数値を作成する
// ------------------------------------------------------------
var value:Number = 123.456789;

// ------------------------------------------------------------
// 小数表記文字列に変換する
// ------------------------------------------------------------
trace( value.toFixed( )  ); // "123"
trace( value.toFixed(4)  ); // "123.4568"
trace( value.toFixed(8)  ); // "123.45678900"
trace( value.toFixed(12) ); // "123.456789000000"
 

■toPrecision() メソッド

 
数値を、指定桁数の精度に丸めた文字列に変換するには、toPrecision() メソッドを使用します。
 
整数部分の情報が失われる場合、指数表記となります。
 
整数部分の情報が失われない場合、小数表記となります。
 
桁が足りない場合、近似値が得られます。
 
桁が余る場合、0 で埋められます。
 
Number.toPrecision ( 桁数 ) :String
第01引数(略可)uint1 ~ 21 までの桁数を指定。省略した場合 0 となりエラーが発生する。
戻り値 String指定したの桁数精度に丸めた文字列が得られる。
 
■取得例
 
数値を、指定桁数の精度に丸めた文字列に変換する

// ------------------------------------------------------------
// 数値を作成する
// ------------------------------------------------------------
var value:Number = 12345.6789;

// ------------------------------------------------------------
// 指定桁数の精度に丸めた文字列に変換する
// ------------------------------------------------------------
trace( value.toPrecision(1)  ); // "1e+4"
trace( value.toPrecision(3)  ); // "1.23e+4"
trace( value.toPrecision(6)  ); // "12345.7"
trace( value.toPrecision(9)  ); // "12345.6789"
trace( value.toPrecision(12) ); // "12345.6789000"
trace( value.toPrecision(15) ); // "12345.6789000000"
 
 

 

数値用のグローバル関数について

 


■数値用のグローバル関数一覧

 
メソッド 説明
parseInt() 文字列を先頭から解析して、整数値に変換する。
parseFloat() 文字列を先頭から解析して、小数値に変換する。
isNaN() 数値が、非数(数値以外)であるか調べる。
isFinite() 数値が、有限な数値であるか調べる。
 
 


■isNaN() 関数

 
数値が、非数(数値以外)であるか調べるには、isNaN() 関数を使用します。
 
非数は、比較演算子『 == 』を使って調べる事はできません。
 
isNaN ( 数値 ) :Boolean
第01引数(略可)Number数値を指定。
戻り値 Boolean非数(数値以外)である場合 true が得られる。それ以外の数値なら false が得られる。
 
■取得例
 
数値が、非数(数値以外)であるか調べる

// ------------------------------------------------------------
// 数値
// ------------------------------------------------------------
var result0:Boolean = isNaN(123);
trace(result0); // false

// ------------------------------------------------------------
// 非数(数値ではない)
// ------------------------------------------------------------
var result3:Boolean = isNaN(Number.NaN);
trace(result3); // true
 

■isFinite() 関数

 
数値が、有限な数値であるか調べるには、isFinite() 関数を使用します。
 
有限な数値とは、『 Infinity と NaN 』以外のすべての数値です。
 
数値型へ変換を試みてから、評価されます。
 
isFinite( 数値 ) :Boolean
第01引数(略可)Number数値を指定。
戻り値 Boolean有限な数値である場合 true が得られる。それ以外なら false が得られる。
 
■取得例
 
数値が、有限な数値であるか調べる

// ------------------------------------------------------------
// 数値
// ------------------------------------------------------------
var result0:Boolean = isFinite(123);
trace(result0); // true

// ------------------------------------------------------------
// 正の無限大
// ------------------------------------------------------------
var result1:Boolean = isFinite(Number.POSITIVE_INFINITY);
trace(result1); // false

// ------------------------------------------------------------
// 負の無限大
// ------------------------------------------------------------
var result2:Boolean = isFinite(Number.NEGATIVE_INFINITY);
trace(result2); // false

// ------------------------------------------------------------
// 非数(数値ではない)
// ------------------------------------------------------------
var result3:Boolean = isFinite(Number.NaN);
trace(result3); // false
 
 

 

文字列から数値型に変換する

 
 


■Number() 関数を使用する

 
任意のデータを、数値型に変換するには、Number() 関数を使用します。
 
変換に失敗した場合、非数となります。
 
Number ( Object ) :Number
第01引数(略可)Object任意のデータを指定。
戻り値 Number数値型に変換した結果が得られる。失敗した場合、非数が得られる。
 
Number() 関数を使って、数値型に変換する

// 文字列を作成する
var str:String = "123.456";

// 数値型に変換する
var value:Number = Number(str);

// 出力テスト
trace(value); // 123.456
trace(typeof(value)); // "number"
 

■parseInt() 関数を使用する (整数値に変換)

 
文字列を先頭から解析して、整数値に変換するには、parseInt() 関数を使用します。
 
先頭に、空白やタブや改行が存在する場合、スキップします。
 
途中で整数値以外の情報が含まれる場合、その時点で解析を終了します。(切り捨て)
 
変換に失敗した場合、非数となります。
 
第02引数を省略した場合、16 進数表記 (0xDDDD) を、16 進数と解釈します。
 
parseInt ( "文字列" , n 進数 ) :Number
第01引数(略可)String任意の文字列を指定。
第02引数(略可)uint2 ~ 36 までの任意の進数を指定。省略した場合 0
戻り値 Number整数として評価した結果が得られる。失敗した場合、非数が得られる。
 
parseInt() 関数を使って、整数値に変換する

// 文字列を作成する
var str:String = "123.456";

// 整数値に変換する
var value:Number = parseInt(str);

// 出力テスト
trace(value); // 123
trace(typeof(value)); // "number"
 
16 進数文字列を、整数値に変換する

// 16 進数文字列を、整数値に変換する
var value:Number = parseInt("0x0000007f");

// 出力テスト
trace(value); // 127 (0x7f)
 
2 進数文字列を、整数値に変換する

// 2 進数文字列を、整数値に変換する
var value:Number = parseInt("01001111" , 2);

// 出力テスト
trace(value); // 79 (0x4f)
 

■parseFloat() 関数を使用する (小数値に変換)

 
文字列を先頭から解析して、小数値に変換するには、parseFloat() 関数を使用します。
 
先頭に、空白やタブや改行が存在する場合、スキップします。
 
途中で小数値以外の情報が含まれる場合、その時点で解析を終了します。
 
変換に失敗した場合、非数となります。
 
parseFloat ( "文字列" ) :Number
第01引数(略可)String任意の文字列を指定。
戻り値 Number小数値として評価した結果が得られる。失敗した場合、非数が得られる。
 
parseFloat() 関数を使って、小数値に変換する

// 文字列を作成する
var str:String = "123.456";

// 小数値に変換する
var value:Number = parseFloat(str);

// 出力テスト
trace(value); // 123.456
trace(typeof(value)); // "number"