訳の正確性を保証するものではありませんので必要に応じて原文であるEcma InternationalのECMA-262にある ECMA-262.pdf ( ECMA-262 5.1 Edition )を参照下さい。
訳:2012年04月 webzoit.net
【構文】 MultiplicativeExpression : UnaryExpression MultiplicativeExpression * UnaryExpression MultiplicativeExpression / UnaryExpression MultiplicativeExpression % UnaryExpression
【セマンティクス】 プロダクション @が上記定義内の演算子の1つに当てはまる MultiplicativeExpression : MultiplicativeExpression @ UnaryExpression は、次のように評価されます。 1. left は、MultiplicativeExpressionを評価した結果とする 2. leftValue は、 GetValue(left) とする 3. right は、UnaryExpressionを評価した結果とする 4. rightValue は、 GetValue(right) とする 5. leftNum は、 ToNumber(leftValue) とする 6. rightNum は、 ToNumber(rightValue) とする 7. leftNum と rightNum に指定した演算子(*, /, or %)を適用した結果を返す、11.5.1, 11.5.2, 11.5.3、それぞれの下にある注記参照。
* (乗算)演算子は、乗算を実行し、当該オペランドのプロダクションを生成します。 乗算は、可換性(順序を入れ替えても結果が変わらない・順序の入れ替えが可能である性質)があります。 乗算は、有限精度である為、常にECMAScript内で関連付けられるというわけではありません。 浮動小数点の乗算の結果は、『IEEE 754 binary double-precision arithmetic / バイナリ(二進)倍精度演算』の規則によって規定されています。
[付記] *漸次(的) / gradualとは、「次第に」、「徐々に」、「だんだん」という意味。 *アンダーフローとは、四則演算や数学関数による演算結果が正規化された浮動小数点データ型数値における絶対値の最小範囲を下回る際に発生(、ちなみにオーバーフローは浮動小数点演算の丸め処理の結果、絶対値が表示上の最大有限数を超える際に発生)。 *漸次(的)アンダーフローとは、最小範囲を下回る際に正規化する際、わずかながら正規化しきれない範囲があり、その範囲においては微妙に精度が失われることがあることを指す。
/ (除算)演算子は、除算を実行し、プロダクションは、当該オペランドの商を生成します。 左オペランドは被除数、右オペランドは除数です。 ECMAScriptは、整数除算を実行しません。 オペランドと全ての除算操作の結果は、倍精度浮動小数点数です。 除算の結果は、『IEEE 754 arithmetic / 演算』の仕様によって決められます。
% (剰余)演算子の暗黙的な除算から当該オペランドの残りをもたらし(剰余を生成し)、左オペランドは被除数、右オペランドは除数です。 [注釈] C/C++では、剰余演算子は、積分オペランドだけを許容しますが、ECMAScriptでは、浮動小数点オペランドも併せて許容します。 % 演算子によって算出したものとする浮動小数点剰余演算子の結果は、 IEEE 754 で定義した"remainder"演算子と同一ではありません。 丸め除算から剰余を算出する IEEE 754 の"remainder"演算子は、切り捨て除算ではなく、その為、その動作は、通常、整数剰余演算と同質ではありません。 代わりにECMAScript言語は、Java の整数剰余演算子と類似した方法で動作する為の浮動小数点操作における % を定義します、尚、これはCライブラリ関数 fmod と比較される場合があります。 ECMAScriptの浮動小数点剰余演算子の結果は、『IEEE arithmetic / 演算』によって決定されます。