number.toExponential ([digits])
Number オブジェクトのメソッド。
数を10進指数表記の文字列に変換します。
digits は小数部分の桁数を 1~17 で指定します(省略時は 1)。
丸めの方法は四捨五入で、負数は絶対値として丸めます(round half away from zero)。
JavaScript では digits を省略すると数を表現するのに必要な桁数として処理されますが、DMonkey では単に 1 が指定されたものとして動作します。
number.toExponential ([digits])
Number オブジェクトのメソッド。
数を10進指数表記の文字列に変換します。
digits は小数部分の桁数を 1~17 で指定します(省略時は 1)。
丸めの方法は四捨五入で、負数は絶対値として丸めます(round half away from zero)。
JavaScript では digits を省略すると数を表現するのに必要な桁数として処理されますが、DMonkey では単に 1 が指定されたものとして動作します。
number.toFixed ([digits])
Number オブジェクトのメソッド。
数を10進固定小数点表記の文字列に変換します。
digits は小数部分の桁数を 0~18 で指定します(省略時は 0)。負数を指定すると整数部分を丸め、小数部分は18桁の '0' で埋められます。
丸めの方法は四捨五入で、負数は絶対値として丸めます(round half away from zero)。
数が 1e15 以上の場合は、digits の指定にかかわらず .toString() の結果と同じ文字列が返されます(多分)。
なお、alert (-1.25.toFixed (1)); で 0 と表示されるのは、number.toFixed の動作ではなく、
-1.25.toFixed (1)
= -(1.25.toFixed (1))
= -('1.3')
= -'1.3'
となり、-'1.3' は 0 になるという DMonkey の型変換の挙動の影響です(parseInt と同じ感じ)。
number.toPrecision ([digits])
JavaScript の number.toPrecision() は、有効数字を digits で指定した桁数に変更して文字列化するメソッドですが、DMonkey においてはそれとは異なり .toFixed() と同じ動作として実装されているようです。混乱防止のため、DMonkey においては .toPrecision() は一切使わない方がよいでしょう。
JavaScript と DMonkey における Math.round() の動作の違い。
JavaScript …… round half up
DMonkey …… round half to even
function r (n) {
alert ('Math.round (' + n + ') == ' + Math.round (n));
}
r (-2.5); // -2
r (-1.5); // -2
r (-0.5); // 0
r (+0.5); // 0
r (+1.5); // 2
r (+2.5); // 2
関連: DMonkey: Global.parseInt()
Global.parseInt() に number 型を渡した時も同じ丸め方になります。これらの挙動は Delphi の System.Round() を規定の丸めモード(rmNearest)で呼び出しているためと思われます。
2013年03月19日の記事を表示しています。