練習①:0.1 + 0.2 の結果を確認してみよう
ステップ1:単純に足してみる
console.log(0.1 + 0.2);
JavaScript結果:
0.30000000000000004
解説:
- JavaScript の数値は 2進数(バイナリ)で表現されるため、
0.1 や 0.2 のような 10進の小数は 正確に2進で表せません。 - そのため、コンピュータ内部では「近いけどちょっとズレた値」になります。
- 足し算するとそのズレが出て、「0.30000000000000004」となります。
ステップ2:見やすく整える
let sum = 0.1 + 0.2;
console.log(sum.toFixed(2)); // 小数点以下2桁に丸めて文字列で表示
JavaScript結果:
0.30
解説:
toFixed(2)は小数点以下2桁に四捨五入して、文字列として返します。- 実際の値は厳密に 0.3 ではないけど、「見た目を整える」ために使うことが多いです。
練習②:Number.MAX_SAFE_INTEGER を超えたらどうなる?
ステップ1:安全な整数の限界を確認
console.log(Number.MAX_SAFE_INTEGER);
JavaScript結果:
9007199254740991
ステップ2:その次の数を足してみる
console.log(Number.MAX_SAFE_INTEGER + 1);
console.log(Number.MAX_SAFE_INTEGER + 2);
JavaScript結果:
9007199254740992
9007199254740992
解説:
- 本来なら「1足したら違う値」になるはずですが、
両方とも同じ値に見える! - これは JavaScript の数値が IEEE 754 形式の倍精度浮動小数点だから。
- この形式では整数を正確に表せるのは ±(2⁵³−1) まで。
それを超えると丸められて同じ値になるんです。
ステップ3:安全かどうかを判定してみよう
console.log(Number.isSafeInteger(Number.MAX_SAFE_INTEGER)); // true
console.log(Number.isSafeInteger(Number.MAX_SAFE_INTEGER + 1)); // false
JavaScript結果
true
false
解説:
Number.isSafeInteger()は値が「安全な整数範囲内」かどうかを判定します。- 金額計算などで大きな数を扱う場合は、この関数を使って安全性をチェックするのが◎です。
練習③:Number("123abc") と parseInt("123abc", 10) の違い
ステップ1:それぞれ実行
console.log(Number("123abc"));
console.log(parseInt("123abc", 10));
JavaScript結果
NaN
123
解説:
Number()は「文字列全体を数値に変換できるか」を見ます。
→ “123abc” は途中に文字があるので変換できず、NaN(Not-a-Number)になります。parseInt()は「先頭から読める部分だけ」を数値に変換します。
→ “123abc” の先頭 “123” はOKなので、結果は 123 になります。
✅ 注意:
parseInt("08")のようなケースでは、古い仕様では8進数扱いになることもあったので、
常に第2引数(基数)を明示的に指定しましょう。
例:parseInt("08", 10)← 10進数として解釈
まとめ(3つの練習で学べたこと)
| テーマ | 学んだポイント |
|---|---|
| ① 小数の誤差 | 0.1 + 0.2 は正確に0.3にならない(2進表現の限界) |
| ② 安全な整数 | JavaScriptは ±(2⁵³−1) まで正確に扱える。それを超えると誤差が出る |
| ③ 文字列変換 | Number()は全体が数字じゃないとNaNになるが、parseInt()は先頭の数字部分だけ読む |
JavaScript | MDNJavaScript (JS) は軽量でインタープリター型(あるいは実行時コンパイルされる)第一級関数を備えたプログラミング言語です。ウェブページでよく使用されるスクリプト言語として知られ、多くのブラ...

