実際に動く例題と練習問題つきで説明します。目的・使い方・注意点・実務での使いどころを順に見ていきましょう。
toFixed とは(ざっくり)
toFixed は 数値を「小数点以下を指定桁に揃えた文字列」 に変換するメソッドです。見た目を揃えたいとき(料金表示、桁揃えした表、割合表示など)によく使います。
let x = 3.14159;
x.toFixed(2); // => "3.14" (文字列を返す)
JavaScriptポイント:
- 戻り値は 文字列(
"3.14")。数値型が欲しいならNumber(...)やparseFloat(...)で変換する。 - 小数点以下の桁数は引数で指定(省略時は
0→ 四捨五入して整数表示)。 - 指定桁数より少ない場合は 0 で埋める(例:”48.00″)。
- 指定桁数より多い場合は 丸め(最も近い値へ) を行う。
基本的な書き方と例
let n = 34.5642;
n.toFixed(); // "35" 引数省略 -> 0桁(四捨五入)
n.toFixed(1); // "34.6"
n.toFixed(3); // "34.564"
let m = 728.52;
m.toFixed(5); // "728.52000" 足りない桁は0で補われる
let tiny = 0.016;
tiny.toFixed(1); // "0.0"
tiny.toFixed(3); // "0.016"
JavaScript注意(構文トリック):
// NG: 文法エラーになることがある
// console.log(48.toFixed(2)); // ← こう書くと構文解析でエラーになる
// 正しい書き方
console.log((48).toFixed(2)); // "48.00"
console.log(48 .toFixed(2)); // 空白を入れる方法でもOK: "48.00"
JavaScript戻り値が文字列であることの影響
表示用にはそのままでOKですが、数値計算に戻すなら:
let s = (12.345).toFixed(2); // "12.35"
let num = Number(s); // 12.35(数値に戻す)
let f = parseFloat(s); // 同じく 12.35
JavaScript丸め(ラウンド)の注意点(浮動小数点の落とし穴)
toFixed の丸めは「最も近い値へ丸める」ように見えますが、JavaScript の数は内部で IEEE754 の浮動小数点で表現されるため、丸め結果が期待と違うことがあります。たとえば 1.005 のような値は内部表現の差で期待通りに丸まらないケースが知られています(エンジンによって挙動の見え方が変わることもある)。
安全な丸めが必要なときは、丸めを数値で行ってから toFixed で整形するか、Math.round を使った手法がよく使われます。
例(小数第2位で丸めてから文字列化):
function toFixedSafe(num, digits) {
const factor = 10 ** digits;
return (Math.round((num + Number.EPSILON) * factor) / factor).toFixed(digits);
}
toFixedSafe(1.005, 2); // より期待に近い結果を得るための工夫
JavaScript(Number.EPSILON を足すのは浮動小数点誤差を小さくするためのテクニックです)
引数の範囲について(重要)
ECMAScript 規格上、toFixed に渡す桁数は一般に 0〜100 の範囲(実装依存の上限がある)です。範囲外の数値を渡すと RangeError になる実装があります。通常は小さい整数(0〜4桁くらい)を使うのが普通です。
実務での使いどころ(ユースケース)
- 価格や金額の表示(例:
¥123.40) - 小数を揃えた表の表示(レポート、CSV出力)
- パーセンテージ表記(
(ratio * 100).toFixed(1) + '%') - UI の少数桁固定(金融、統計のダッシュボード)
例(パーセンテージ):
let ratio = 0.123456;
let label = (ratio * 100).toFixed(1) + "%"; // "12.3%"
JavaScript練習問題
問題と答えをセットで載せます。まずは自分でコンソールに打ってみて、結果を確認してください。
let a = 2.71828;を小数第2位にして表示(文字列)
答:a.toFixed(2)→"2.72"let b = 100;を小数第3位の形式で表示(”100.000″)にするには?
答:(100).toFixed(3)または100 .toFixed(3)→"100.000"let c = 0.045;を小数第2位で表示。何になる?(コンソールで試す)
ヒント:丸めのルールを意識。
答:c.toFixed(2)→"0.04"(0.045 は四捨五入で 0.05 に近いが、浮動小数点表現の影響で結果が変わる可能性があるため、自分の実行環境で確認するとよい)- 文字列
"9.50"を数値に戻して+1を足して10.5を得るには?
答:
let s = (9.5).toFixed(2); // "9.50"
let n = Number(s); // 9.5
console.log(n + 1); // 10.5
JavaScriptよくある間違い・Q&A
- Q
toFixed(2)は数値を返しますか? - A
いいえ。文字列を返します。表示用。数値でさらに計算したければ
Number(...)等で変換を忘れずに。
- Q
toFixedは常に「四捨五入」しますか? - A
「最も近い値へ丸める」動作をします。見た目は四捨五入に近いですが、浮動小数点の実装差で期待と違うことがあり得るため注意
- Q
toFixedで桁数を大きくしすぎるとどうなる? - A
実装によっては
RangeErrorになることがあるので、通常は必要最小限の桁数に抑える。
まとめ(初心者が覚えておく3点)
toFixed(n)は 小数点以下 n 桁に揃えた文字列 を返す。- 戻り値は 文字列 → 数値で使うなら
Number()/parseFloat()を使う。 - 浮動小数点誤差に注意。正確な丸めが必要な場面では
Math.roundと組み合わせたり、専用ライブラリ(小数計算ライブラリ)を使う。
