Number.prototype.toFixed()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
toFixed()
メソッドは、数を固定小数点表記を用いて整形します。
試してみましょう
function financial(x) {
return Number.parseFloat(x).toFixed(2);
}
console.log(financial(123.456));
// Expected output: "123.46"
console.log(financial(0.004));
// Expected output: "0.00"
console.log(financial("1.23e+5"));
// Expected output: "123000.00"
構文
toFixed()
toFixed(digits)
引数
digits
省略可-
小数点の後に現れる桁の数です。これは
0
以上100
以下の値です。この引数が省略されると、0
として扱われます。
返値
与えられた数値を固定小数点表記を用いて表した文字列です。
例外
RangeError
-
digits
が0
以上100
以下ではない場合に発生します。 TypeError
-
このメソッドが
Number
ではないオブジェクト上で実行された場合に発生します。
解説
toFixed()
メソッドは numObj
の文字列表記を、指数表記を使用せず、小数点以下を正確に digits
桁として返します。必要に応じて数値は丸められ、小数部は指定された長さになるよう必要に応じて 0 で埋められます。
numObj
の絶対値が 1e+21
以上の場合は、このメソッドは単純に Number.prototype.toString()
を呼び出し、指数表記での文字列を返します。toFixed()
は numObj
の値が有限数でない場合、"Infinity"
、"NaN"
、"-Infinity"
の何れかを返します。
toFixed()
の出力は、一部の値では toString()
よりも正確かもしれませんが、これは toString()
が隣の数値と区別できる程度の有効数字しか出力しないためです。例えば、次のようになります。
(1000000000000000128).toString(); // '1000000000000000100'
(1000000000000000128).toFixed(0); // '1000000000000000128'
しかし、高すぎる digits
の精度を選ぶと、10 進数の小数を浮動小数点で正確に表せないため、予期せぬ結果を返すことがあります。例えば次のようになります。
(0.3).toFixed(50); // '0.29999999999999998889776975374843459576368331909180'
例
toFixed() の使用
const numObj = 12345.6789;
numObj.toFixed(); // '12346'。四捨五入され小数部がなくなる
numObj.toFixed(1); // '12345.7' を返す。切り上げ
numObj.toFixed(6); // '12345.678900'を返す。0 を追加
(1.23e20).toFixed(2); // '123000000000000000000.00'
(1.23e-10).toFixed(2); // '0.00'
(2.34).toFixed(1); // '2.3'
(2.35).toFixed(1); // '2.4'。切り上げ
(2.55).toFixed(1); // '2.5'
// 浮動小数点数で正確に表せず、最も近い浮動小数点数の
// 方が低いため、切り捨てられる。
(2.449999999999999999).toFixed(1); // '2.5'
// 2.45 との差が NUMBER.EPSILON 未満なので、切り上げ
// このリテラルは、実際には 2.45 と同じ数値をエンコードしている
(6.02 * 10 ** 23).toFixed(50); // 6.019999999999999e+23; 巨大な数値は指数表記を使用
toFixed() を負の数に使用
メンバーアクセスは単項マイナスよりも優先順位が高いので、文字列を取得するためには負の数の式全体をグループ化する必要があります。
-2.34.toFixed(1); // -2.3, a number
(-2.34).toFixed(1); // '-2.3'
仕様書
Specification |
---|
ECMAScript® 2025 Language Specification # sec-number.prototype.tofixed |
ブラウザーの互換性
Report problems with this compatibility data on GitHubdesktop | mobile | server | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
toFixed |
Legend
Tip: you can click/tap on a cell for more information.
- Full support
- Full support