このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。

View in English Always switch to English

Intl.NumberFormat.prototype.formatRange()

Baseline 広く利用可能

この機能は広く実装されており、多くのバージョンの端末やブラウザーで動作します。2023年8月以降、すべてのブラウザーで利用可能です。

formatRange()Intl.NumberFormat インスタンスのメソッドで、この Intl.NumberFormat オブジェクトのロケールおよび書式設定オプションに従って、数値の範囲を書式化します。

構文

js
formatRange(startRange, endRange)

引数

startRange

書式化する数値 (Number)、長整数 (BigInt)、文字列のいずれかです。文字列は、数値への変換と同じ方法で解釈されますが、formatRange() は、文字列が表す正確な値を使用し、暗黙的に数値に変換する際に精度が失われることを避けます。

endRange

書式化する数値 (Number)、長整数 (BigInt)、文字列のいずれかです。

返値

この Intl.NumberFormat オブジェクトのロケールおよび書式設定オプションに従って書式化された、指定された数値の範囲を表す文字列。開始値と終了値が同じ文字列に書式化されている場合、出力には単一の値のみが含まれ、その前に「おおよその等価」記号("~$3" など)が付加される場合があります。この記号の挿入は、ロケール設定のみに依存し、startRange === endRange の場合でも挿入されます。

例外

RangeError

startRange または endRangeNaN または変換不可能な文字列の場合に発生します。

TypeError

startRange または endRange のいずれかが undefined の場合に発生します。

解説

formatRange ゲッター関数は、呼び出された Intl.NumberFormat オブジェクトのロケールおよび書式化オプションに従って、数値の範囲を文字列に書式化します。

formatRange の使用

通貨値の範囲を書式化するには、formatRange ゲッター関数を使用します。

js
const nf = new Intl.NumberFormat("en-US", {
  style: "currency",
  currency: "USD",
  maximumFractionDigits: 0,
});

console.log(nf.formatRange(3, 5)); // "$3 – $5"

// メモ: startRange と endRange が同じ値に丸められる場合、
// 「ほぼ等しい」記号が追加されます。
console.log(nf.formatRange(2.9, 3.1)); // "~$3"
js
const nf = new Intl.NumberFormat("es-ES", {
  style: "currency",
  currency: "EUR",
  maximumFractionDigits: 0,
});

console.log(nf.formatRange(3, 5)); // "3-5 €"
console.log(nf.formatRange(2.9, 3.1)); // "~3 €"

仕様書

仕様書
ECMAScript® 2027 Internationalization API Specification
# sec-intl.numberformat.prototype.formatrange

ブラウザーの互換性

関連情報