この記事では数値を指定した小数点以下の桁数で表すメソッド『tofixedメソッド』について、以下の内容をサンプルコードを用いて分かりやすく説明するように心掛けています。ご参考になれば幸いです。
tofixed
メソッドとはtofixed
メソッドの構文tofixed
メソッドの使い方- 数値を固定小数点表記で表した文字列で取得する
- 小数点以下を指定した桁数で丸める
toFixed
メソッドで数値型を返す
toFixed
メソッドの特徴- 引数を省略した場合は
digits
が0として扱われる - 数値を表すのに必要な桁数よりも引数で指定した桁数が多い場合は0で埋められる
- 整数リテラルに対して直接
toFixed
メソッドを実行するとエラーになる - 引数
digits
が0以上100以下でない場合にエラーになる - 数値型以外を
toFixed
メソッドに使うとエラーになる numObj
の絶対値が1e+21
以上の場合は指数表記での文字列を返すnumObj
の値が有限数でない場合、"Infinity"
、"NaN"
、"-Infinity"
のいずれかを返す
- 引数を省略した場合は
などを図を用いて分かりやすく説明するように心掛けています。ご参考になれば幸いです。
tofixedメソッドとは
toFixed
メソッドは、JavaScriptのNumber
オブジェクトに使われるメソッドで、数値を指定した小数点以下の桁数で表した文字列として返します。数値を固定小数点表記(例えば、123.456
のような形式)で扱いたい場合に非常に便利です。
Number
オブジェクトは、JavaScriptで数値(Number
型)を扱う際の技術的な用語です。JavaScriptでは、数値や数値型の変数が必要に応じて自動的にNumber
オブジェクトに変換されます。そのため、数値に対してtoFixed
メソッドを直接呼び出すことができます。
後ほどtoFixed
メソッドの構文や使い方について詳しく説明しますが、まずは簡単なサンプルコードを見てみましょう。
let num = 123.456;
console.log(num.toFixed(2));
// "123.46" ← 小数点2桁で丸めている
上記のサンプルコードでは、数値123.456
を指定した小数点以下の桁数(2
)で丸めています(四捨五入に似ていますが厳密には異なります)。そして、丸めた結果を文字列として取得しています。
tofixedメソッドの構文
tofixed
メソッドの構文を以下に示します。
toFixedメソッドの構文
numObj.toFixed(digits)
numObj
には固定小数点表記にしたい数値オブジェクトを指定します。
toFixed
メソッドの引数と返り値を以下に示します。
引数
digits
- 小数点以下の桁数を指定します。この引数は省略可能で、省略した場合は
0
として扱われます。
- 小数点以下の桁数を指定します。この引数は省略可能で、省略した場合は
返り値(戻り値)
tofixed
メソッドはnumObj
を指定した小数点以下の桁数(digits
)で丸めた文字列を返します。
tofixedメソッドの使い方
tofixed
メソッドについて、以下に示している使い方をこれから説明します。
- 数値を固定小数点表記で表した文字列で取得する
- 小数点以下を指定した桁数で丸める
toFixed
メソッドで数値型を返す
上記の使い方について順番に説明します。
数値を固定小数点表記で表した文字列で取得する
toFixed
メソッドを使うと、数値を固定小数点表記で表した文字列を取得できます。
以下にサンプルコードを示します。
let num = 1.23e20;
console.log(num.toFixed(2));
// "123000000000000000000.00"
上記のサンプルコードでは、指数表記で表されている数値1.23e20
を固定小数点表記の文字列に変換しています。
小数点以下を指定した桁数で丸める
toFixed
メソッドを使うと、数値を指定した小数点以下の桁数で丸めて、その結果を文字列として取得することができます。
以下にサンプルコードを示します。
let num = 123.456;
console.log(num.toFixed(2));
// "123.46"
上記のサンプルコードでは、数値123.456
を小数点以下2桁に丸め、"123.46"
という文字列として返しています。
toFixedメソッドで数値型を返す
toFixed
メソッドは文字列を返しますが、結果を数値として扱いたい場合は、parseFloat
メソッドを使って数値に変換できます。
サンプルコードを以下に示します。
let num = 123.456;
let fixedNum = parseFloat(num.toFixed(2));
console.log(fixedNum);
// 123.46
上記のサンプルコードでは、toFixed
メソッドの返り値は文字列なので、parseFloat
メソッドを使って文字列を数値に変換しています。
toFixedメソッドの特徴
toFixed
メソッドの特徴を以下に示します。
- 引数を省略した場合は
digits
が0として扱われる - 数値を表すのに必要な桁数よりも引数で指定した桁数が多い場合は0で埋められる
- 整数リテラルに対して直接
toFixed
メソッドを実行するとエラーになる - 引数
digits
が0以上100以下でない場合にエラーになる - 数値型以外を
toFixed
メソッドに使うとエラーになる numObj
の絶対値が1e+21
以上の場合は指数表記での文字列を返すnumObj
の値が有限数でない場合、"Infinity"
、"NaN"
、"-Infinity"
のいずれかを返す
上記の特長について順番に説明します。
引数を省略した場合はdigitsが0として扱われる
toFixed
メソッドに引数を指定しない場合、引数digits
が0
として扱われます。そのため、返り値は整数で表示されます。
サンプルコードを以下に示します。
let num = 123.456;
console.log(num.toFixed());
// "123"
上記のサンプルコードでは、toFixed
メソッドに引数を指定していないため、小数点以下の桁数は0
として扱われます。結果として、123.456
が丸められ、整数部分の"123"
という文字列が返されています。
数値を表すのに必要な桁数よりも引数で指定した桁数が多い場合は0で埋められる
toFixed
メソッドは、指定した小数点以下の桁数が数値の実際の桁数より多い場合、0
で埋められます。
サンプルコードを以下に示します。
let num = 123.456;
console.log(num.toFixed(5));
// "123.45600"
上記のサンプルコードでは、小数点以下を5桁に指定していますが、元の数値の小数点以下は3桁しかありません。そのため、残りの2桁は0
で埋められ、結果として"123.45600"
という文字列が返されています。
整数リテラルに対して直接toFixedメソッドを実行するとエラーになる
整数リテラルに対して直接toFixed
メソッドを直接呼び出すとエラーになります。この場合、整数リテラルを括弧で囲むか、整数リテラルの後に空白を追加することでエラーを回避できます。
サンプルコードを以下に示します。
console.log(10.toFixed(2)); // 整数リテラルに対して直接toFixedメソッドを実行
// Uncaught SyntaxError: Invalid or unexpected token
console.log((10).toFixed(2)); // 数値を括弧で囲む
// "10.00"
console.log(10 .toFixed(2)); // 数値の後に空白を入れる
// "10.00"
let num = 10;
console.log(num.toFixed(2)); // 数値型の変数に対してはエラーにならない
// "10.00"
上記のサンプルコードでは、10.toFixed(2)
を実行しようとすると、構文エラーが発生します。これは、10
という整数リテラルに対して.
(ドット)が小数点かメソッド呼び出しを示すものかをJavaScriptが判別できないためです。
しかし、数値リテラルを括弧で囲むことで、JavaScriptは正しくメソッド呼び出しとして解釈することができ、"10.00"
という結果が得られます。また、数値の後に空白を入れることでもエラーを回避できます。
また、変数に格納された整数に対して toFixed
メソッドを呼び出す場合は、整数リテラルと異なり構文上の問題が発生しません。上記のように、num
に数値10
が代入されている場合、toFixed
メソッドは正常に動作し、"10.00"
という結果が得られます。
引数digitsが0以上100以下でない場合にエラーになる
toFixed
メソッドで指定する桁数(digits
)は0
以上100
以下でなければなりません。それ以外を指定するとエラーが発生します。
サンプルコードを以下に示します。
let num = 123.456;
console.log(num.toFixed(101));
// RangeError: toFixed() digits argument must be between 0 and 100
上記のサンプルコードでは、digits
に101
を指定していますが、toFixed
メソッドは小数点以下の桁数を0
から100
までしか指定できません。そのため、範囲外の桁数を指定するとRangeError
が発生します。
数値型以外をtoFixedメソッドに使うとエラーになる
toFixed
メソッドは数値型以外のデータ型には使用できません。
サンプルコードを以下に示します。
let num = 'hogehoge';
console.log(num.toFixed(2));
// TypeError: num.toFixed is not a function
上記のサンプルコードでは、num
に文字列'hogehoge'
を指定してtoFixed
メソッドを実行しようとしていますが、エラーが発生します。toFixed
メソッドは数値型(Number
)のみに使用できるため、文字列や他のデータ型には使えません。
numObjの絶対値が1e+21以上の場合は指数表記での文字列を返す
numObj
の絶対値が1e+21
以上の場合、toFixed
メソッドは単純にNumber.prototype.toString()
を呼び出し、指数表記での文字列を返します。
サンプルコードを以下に示します。
let num = 1e22;
console.log(num.toFixed(2));
// "1e+22"
上記のサンプルコードでは、非常に大きな数値1e22
に対してtoFixed
メソッドを使っていますが、結果は固定小数点表記ではなく、指数表記で返されます。これは、toFixed
メソッドが1e+21
以上の数値に対しては自動的に指数表記を返すためです。
numObjの値が有限数でない場合、"Infinity"、"NaN"、"-Infinity"のいずれかを返す
数値が無限大や非数値の場合、toFixed
メソッドはそれぞれに対応する文字列を返します。
サンプルコードを以下に示します。
let num = Infinity;
console.log(num.toFixed(2));
// "Infinity"
上記のサンプルコードでは、数値が無限大の場合にtoFixed
メソッドを実行しています。この場合、toFixed
メソッドは"Infinity"
という文字列を返しています。
本記事のまとめ
この記事では数値を指定した小数点以下の桁数で表すメソッド『tofixedメソッド』について、以下の内容を説明しました。
tofixed
メソッドとはtofixed
メソッドの構文tofixed
メソッドの使い方- 数値を固定小数点表記で表した文字列で取得する
- 小数点以下を指定した桁数で丸める
toFixed
メソッドで数値型を返す
toFixed
メソッドの特徴- 引数を省略した場合は
digits
が0として扱われる - 数値を表すのに必要な桁数よりも引数で指定した桁数が多い場合は0で埋められる
- 整数リテラルに対して直接
toFixed
メソッドを実行するとエラーになる - 引数
digits
が0以上100以下でない場合にエラーになる - 数値型以外を
toFixed
メソッドに使うとエラーになる numObj
の絶対値が1e+21
以上の場合は指数表記での文字列を返すnumObj
の値が有限数でない場合、"Infinity"
、"NaN"
、"-Infinity"
のいずれかを返す
- 引数を省略した場合は
お読み頂きありがとうございました。