訳の正確性を保証するものではありませんので必要に応じて原文であるEcma InternationalのECMA-262にある ECMA-262.pdf ( ECMA-262 5.1 Edition )を参照下さい。
訳:2012年04月 webzoit.net
Number型は、単一の特殊な NaN 値としてECMAScript内で表現されるIEEE標準規格の値である"Not-a-Number"とは異なる 9007199254740990 (2の53乗 - 2 )を除き、2進浮動小数点演算におけるIEEE標準規格で記述したように倍精度64ビットフォーマット IEEE 754 の値を表現する、まさに 18437736874454810627 ( 2の64乗 - 2の53乗 + 3 )という値を持ちます。 (注釈:当該 NaN 値は、プログラム式 NaN によって生成される値です。) 同じ実装内では、外部コードが様々な Not-a-Number 値間で異なるものとして検出することができる場合もあるかもしれませんが、そのような動作は実装依存であり、(本来、)ECMAScriptコードにおいては、全ての NaN 値は、他のものと見分けがつかないものです。 他に正の無限大と負の無限大と呼ばれる2つの特殊な値があります。 簡潔に言うと、それらの値は、それぞれ +∞ 、 -∞ という記号によって解説目的において参照される場合もあります。 (注釈:これら2つの無限大Number値は、+Infinity(または単にInfinity)と-Infinityといったようにプログラム式によって生成されます。) 他方、18437736874454810624 ( 2の64乗 - 2の53乗 ) という値は、有限数値と呼ばれます。 これらの半分は正の数値であり、半分は負の数値です。 有限の正のNumber値においてそれは、同じ大きさを持つ負の値と一致します。 追記するとそれらは、正のゼロと負のゼロの両方があるということです。 簡潔に言えば、これらの値は、それぞれ +0 と -0 という記号によって解説目的において参照される場合もあります。 (追記するとこれら2つの異なるゼロというNumber値は、 +0 (または単に 0 )と -0 といったようにプログラム式によって生成されます。) 18437736874454810622 ( 2の64乗 - 2の53乗 + 2 )という有限の非ゼロ値には2つの種類があります。 それらの内、18428729675200069632 ( 2の64乗 - 2の54乗 ) は、s が +1 または -1 、m が 2の52乗以上で且つ 2の53乗より小さい正の整数、 e が -1074 から 971 を含む範囲の整数である
s * m * 2e ( 2^e 2のe乗 )
という書式を持っています。 残りの 9007199254740990 ( 2の53乗 - 2 )という値は、非正規形であり、s が +1 または -1 、m が 2の52乗より小さい正の整数、 e が -1074 である
s * m * 2e ( 2^e 2のe乗 )
という書式を持っています。 追記すると大きさが2の53乗より大きいものはない全ての正と負の整数は、Number型で表現されます(他方、整数 0 は、 +0 と -0 という2つの表現を持ちます)。 有限の数は、それが、非ゼロで且つ、整数 m を(上記で示した2つの書式の対の1つの中で)それを表す為に使用した場合には、奇数の仮数を持ち、他方は、偶数の仮数を持ちます。 この仕様内では、" x における Number値"というフレーズ、つまり x は、次の方法で選択したNumber値を意味する(πのような不合理な数値になる場合でさえ)実際の数学的な量であるまさに非ゼロを表します。 -0を取り除き、Number型で表さない、それに加算した2つの加算値、すなわち 2の1024乗 ( +1 * 2の53乗 * 2の971乗 )と -2の1024乗 ( -1 * 2の53乗 * 2の971乗 )を伴うNumber型の有限の値全ての集合を考えてみましょう。 xの値に最も近いこのセットのメンバーを選択しましょう。 もし、セットの内、2つの値が等しければ、偶数の仮数を伴う一方が選択されます。 この目的において2つの外部値 2の1024乗 と -2の1024乗 は偶数の仮数を持つことが考慮されます。 最後にもし、2の1024乗 が選択され、+∞ を伴うそれを置換する場合、もし、-2の1024乗が選択され、-∞を伴うそれを置換する場合、もし、+0 が選択され、x がゼロより小さい場合にのみ -0を伴うそれを置換する場合には、他の選択値は変更されずに使われます。 その結果は、x におけるNumber値です。 (このプロシージャは、IEEE 754 の "近似値丸め"("round to nearest")モードの動作と正確に一致します。) 一部のECMAScript演算子は、-2の31乗から 2の31乗-1 を含む、または、0 から -2の32乗-1 を含む範囲内にある整数を伴う場合に限って扱います。 これらの演算子は、一部のNumber型の値を許容しますが、最初は、2の32乗という整数値の1つをこのような値にそれぞれ変換します。 9.5 と 9.6 にある ToInt32 と ToUint32 演算子の説明を参照しましょう。