Math.sumPreciseから学ぶ、ECMAScript仕様の数値の種類
LTトラックCJapanese
ECMAScriptの仕様には、4種類の数値が登場します。
一般的に知られているのは「Number」と「BigInt」の2つですが、それ以外に、ECMAScriptのプログラムから直接扱う値ではなく、仕様の記述のみに用いられる「Mathematical values」と、それを拡張した「Extended mathematical values」が存在します。 Numberが64ビット浮動小数点数である一方、Mathematical valuesは任意の実数を表します。そのため、Mathematical valuesを用いた仕様上の計算では、浮動小数点数の丸めによる誤差が発生しません。
ECMAScript 2026で追加された Math.sumPrecise では、高精度な加算を定義するために、このMathematical valuesの特徴を活かして仕様が記述されています。
本セッションでは、実際のMath.sumPreciseの仕様などを取り上げながら、ECMAScript仕様において、上記4種類の数値がどのように扱われているかを紹介します。 𝔽(x)やℝ(x)といった、ECMAScript仕様を読むうえで必要となる数値の表記についても説明します。
本セッションを通じて、最新の仕様を含む、ECMAScript仕様に登場する数値を正しく読み分けるための、基礎的な知識を身につけることを目指します。

syumai
2025 年 12 月に LayerX に入社し、現在はバクラクヘルプデスク エージェントの開発を担当している。 Asakusa.go 、ECMAScript 仕様輪読会主催。「Web 開発者のための[入門]Cloudflare Workers」を執筆。