●解説
数値の小数点以下の端数の処理には、切捨てと四捨五入、および切上げがあります。Mathクラスはそれぞれの演算について、Math.floor()とMath.round()ならびにMath.ceil()メソッドを備えています。
Mathクラス |
パッケージ
|
トップレベル
|
継承
|
Math→Object
|
ceil()メソッド |
ASタイプ
|
M |
ランタイムバージョン
|
AIR 1.0/Flash Player 9
|
文法
|
Math.ceil(value:Number):Number
|
意味
|
指定された数値の小数点以下を切上げて、整数値を返します。
|
引数
|
value:Number ― 小数点以下を切上げる数値。
|
戻り値
|
引数に指定された数値以上のもっとも小さい整数。
|
floor()メソッド |
ASタイプ
|
M |
ランタイムバージョン
|
AIR 1.0/Flash Player 9
|
文法
|
Math.floor(value:Number):Number
|
意味
|
指定された数値の小数点以下を切捨てて、整数値を返します。
|
引数
|
value:Number ― 小数点以下を切捨てる数値。
|
戻り値
|
引数に指定された数値以下のもっとも大きい整数。
|
round()メソッド |
ASタイプ
|
M |
ランタイムバージョン
|
AIR 1.0/Flash Player 9
|
文法
|
Math.round(value:Number):Number
|
意味
|
指定された数値の小数点以下を四捨五入して、整数値を返します。
|
引数
|
value:Number ― 小数点以下を四捨五入する数値。
|
戻り値
|
引数に指定された数値の小数点以下が0.5以上のときは数値を切上げ、0.5未満の場合には小数点以下を切捨てた整数。
|
※マイナスの数値の演算結果
正の数値では、その絶対値が大きいほど値は大きくなります。しかし、負の数値については、絶対値は小さい方が値は大きいので、注意が必要です。たとえば、以下の結果を確かめてみましょう。
trace(Math.ceil(-1.9)); // 出力: -1
trace(Math.floor(-1.1)); // 出力: -2
trace(Math.round(-1.5)); // 出力: -1
|
|
3つのメソッドのいずれも、小数点以下の端数を処理対象とします。つまり、小数点以下の桁数を指定して、切上げ・切捨て・四捨五入することはできません。桁数を定めて処理したいときは、数値に一旦10の累乗を掛けてメソッドを実行してから、改めて同じ数で割り算します。たとえば、指定された数値の小数第3位以下を切捨てたいときは、つぎのように計算します。
trace(Math.floor(12.3456*100)/100); // 出力: 12.34
|
○記述例
以下のスクリプト01-08-001には、フレームアクションに数値を小数点以下の任意の桁数で切捨てる関数xRoundDown()が定義してあります。引数には、切捨てる演算対象の数値と小数点以下の桁数の整数を指定します。関数は指定された桁より後の端数を切捨て、小数点以下指定桁数までの数値を返します。たとえば、数値の小数第3位以下を切捨てて、第2位までの数値にしたいときは、関数xRoundDown()をつぎのように呼出します。
trace(xRoundDown(12.3456, 2)); // 出力: 12.34
|
スクリプト01-08-001■小数点以下を指定桁数で切捨て
// フレームアクション
function xRoundDown(nValue:Number, nDigits:int):Number {
var nMultiplier:Number = Math.pow(10, nDigits);
var nResult:Number = Math.floor(nValue * nMultiplier) / nMultiplier;
return nResult;
}
|
なお、Math.pow()メソッドは、指定した数値の累乗を求めます。このメソッドについては、「座標を距離と角度で扱いたい」をご参照ください。
→関連項目
「座標を距離と角度で扱いたい」
作成者: 野中文雄
ドラフト作成: 2009年5月20日