JavaScript | 基礎構文:数値・演算 – 指数表現

JavaScript JavaScript
スポンサーリンク

指数表現を一言でいうと

JavaScript の「指数表現」は、
とても大きい数・とても小さい数を、e を使ってコンパクトに書くための書き方 です。

数学で見る

  • 1.23×104
  • 5×10-3

みたいなものを、JavaScript では

1.23e4   // 1.23 × 10^4
5e-3     // 5 × 10^-3
JavaScript

のように書きます。

ここが重要です。
指数表現は e の右側の数だけ、10 の何乗かを表す」 と理解するとスッと入ってきます。
e は「自然対数の底 e」ではなく、「×10 の何乗」という意味で使われています。


基本構文:aeb の意味をしっかり掴む

aeb は「a × 10 の b 乗」

指数表現の基本形はこうです。

aeb
JavaScript

これは数学的には

a×10b

を意味します。

const x = 1.23e4;   // 1.23 × 10^4
console.log(x);     // 12300
JavaScript

1.23e4 は、

  • 1.23 に
  • 10 の 4 乗(10,000)を掛ける

→ 12300 になる、というわけです。

正の指数の例

console.log(1e3);    // 1000   → 1 × 10^3
console.log(2.5e2);  // 250    → 2.5 × 10^2
console.log(3e0);    // 3      → 3 × 10^0(10^0 = 1)
console.log(7e1);    // 70     → 7 × 10^1
JavaScript

指数が大きくなるほど、「0 がたくさん付く大きな数」を簡単に表現できます。

console.log(1e6);    // 1000000(100万)
console.log(1e9);    // 1000000000(10億)
console.log(3.2e7);  // 32000000(3200万)
JavaScript

負の指数の例(小さい数)

負の指数は「10 のマイナス何乗」、つまり「小さい数」です。

console.log(1e-3);   // 0.001    → 1 × 10^-3
console.log(5e-2);   // 0.05     → 5 × 10^-2
console.log(3.2e-4); // 0.00032  → 3.2 × 10^-4
JavaScript

ここが重要です。
指数がプラスなら「大きく」なり、マイナスなら「小さく」なる。
e の右側は「小数点をどの方向に何桁動かすか」と考えると直感的です。
1.23e4 は小数点を右に 4 桁、1.23e-4 は左に 4 桁動かすイメージです。


なぜ指数表現が必要なのか

とても大きな数・小さな数を扱うときに便利

日常のプログラムでも、

  • ファイルサイズ(バイト)
  • ミリ秒単位の時間
  • 天文学的な距離
  • 科学計算での非常に小さな値

など、「0 がたくさん付く」数値は普通に出てきます。

const big = 1000000000;        // 10億(桁が見づらい)
const big2 = 1e9;              // 10億(読みやすい)

const small = 0.000000001;     // 0 が多くて分かりにくい
const small2 = 1e-9;           // 1 × 10^-9(ナノ秒など)
JavaScript

1e9 のほうが、「10 の 9 乗」=「10 億」 ということが、一瞬で分かります。

表示のときにも指数表現になることがある

JavaScript は、数値が非常に大きい・非常に小さいとき、
自動的に指数表現で表示することがあります。

console.log(12345678901234567890);    // 1.2345678901234567e+19 のような表示になることがある
console.log(0.000000000000123);      // 1.23e-13 のような表示になることがある
JavaScript

JavaScript の内部表現として指数表現が使われている と思っておくと自然です。

ここが重要です。
指数表現そのものは「特別な数」ではなく、
大きすぎる・小さすぎる数を人間に読みやすく表すための記法 です。
中身は普通の number であり、演算も通常通りに行えます。


コード内で指数表現を使う具体例

大きな定数を分かりやすく書く

const ONE_MILLION = 1e6;   // 1000000
const ONE_BILLION = 1e9;   // 1000000000

const fileSize = 5 * 1e6;  // 5000000(約 5MB)
console.log(fileSize);
JavaScript

5000000 より 5 * 1e6 のほうが、
「500 万」という意図が読み取りやすい です。

小さい単位(ミリ秒・ナノ秒など)の表現

const millisecond = 1e-3; // 0.001 秒
const microsecond = 1e-6; // 0.000001 秒
const nanosecond  = 1e-9; // 0.000000001 秒
JavaScript

ユニット変換をするときにも指数表現は便利です。

数学的な式の中で使う

const lightSpeed = 3e8; // 光速 ≒ 3 × 10^8 m/s

const seconds = 1;
const distance = lightSpeed * seconds;

console.log(distance); // 3e8(約 3 億メートル)
JavaScript

ここが重要です。
指数表現を使うと、その数字の「桁数の意味」までコードに埋め込める ようになります。
「これ 10億 だよね? 0 いくつだっけ?」と数えなくてよくなるのが大きなメリットです。


JavaScript 特有のポイントと注意点

JS の number はすべて「倍精度浮動小数点数」

JavaScript の数値型 number は、
すべて 64 ビット浮動小数点(いわゆる double) です。

整数・小数・指数表現、すべて同じ number 型で扱われます。

console.log(typeof 100);     // "number"
console.log(typeof 1.23);    // "number"
console.log(typeof 1.23e4);  // "number"
JavaScript

指数表現だからといって、特別な型になるわけではありません。

表現できる範囲と限界(ざっくり)

number は非常に大きい値から非常に小さい値まで扱えますが、
精度には限界があります。

console.log(Number.MAX_VALUE);      // 約 1.79e+308
console.log(Number.MIN_VALUE);      // 約 5e-324(0 に近い最小の正の数)
JavaScript

これらも指数表現で表示されます。

桁数が多くなるほど、
「1 ずつ増やす」ができなくなってきたり、
小数の誤差が目立ってきます。

ここが重要です。
指数表現自体は便利ですが、
「ものすごく大きい/小さい数を完全な精度で扱えるわけではない」 という点は頭の片隅に置いておいてください。
ただし、基礎学習や普通の Web アプリでは、そこまで気にしなくて大丈夫です。


指数表現の文字列との相互変換

数値 → 文字列:toExponential

数値を「指数表現の文字列」にしたい場合、
toExponential が使えます。

const n = 12345.6789;

console.log(n.toExponential());     // 例: "1.23456789e+4"
console.log(n.toExponential(2));    // "1.23e+4"(有効数字 3 桁)
console.log(n.toExponential(5));    // "1.23457e+4"
JavaScript

引数は「小数点以下の桁数」ではなく、有効数字の桁数 − 1 というイメージです(厳密には「小数点以下の桁数」を指定しますが、結果として有効桁数が決まります)。

文字列 → 数値:Number, parseFloat

指数表現の文字列を NumberparseFloat に渡すと、
number に変換できます。

const s = "1.23e4";

console.log(Number(s));      // 12300
console.log(parseFloat(s));  // 12300
JavaScript

「外部から指数表現の文字列が送られてくる」ようなケースでも、
そのまま数値に変換して計算できます。

ここが重要です。
指数表現は「書き方」としてだけでなく、「表示フォーマット」としても利用される。
toExponential / Number / parseFloat を知っておくと、指数表現の文字列ともやり取りしやすくなります。


初心者として指数表現で本当に押さえてほしいこと

指数表現 aeb は、「a × 10^b」を意味する。
1e6 は 1000000、1e-3 は 0.001。

とても大きい(0 が多い)数や、とても小さい(0.000… が多い)数を、
読みやすく・書きやすくするための記法。

JavaScript の number は、整数・小数・指数表現を含めてすべて「同じ型」。
指数表現で書いても中身は普通の数値として計算できる。

0〜1 の乱数 Math.random() のように、
JavaScript 自身も数値を指数表現で表示することがある。
大きすぎる・小さすぎる数は自動的に 1.23e+8 のような形になり得る。

ここが重要です。
指数表現は「特別な数学の世界の話」ではなく、
“桁の多い数をコードで扱うための、ただの便利な書き方” です。
1e6 を見たら「1 × 10^6 = 100万」、
5e-3 を見たら「5 × 10^-3 = 0.005」
と即座に読み替えられるようになると、数値扱いがかなり楽になります。

最後に、指数表現に慣れるための小さな練習を置いておきます。

const values = [
  1e3,
  2.5e4,
  3e-2,
  5e-3,
  1.23e5,
  4.56e-4,
];

for (const v of values) {
  console.log(v);
}
JavaScript

実行して、「自分の頭の中でイメージした値」と、
実際にコンソールに表示される値を見比べてみてください。
指数部分(e の右側の数字)が「小数点をどちらに何桁動かすか」を支配している感覚が、かなりはっきりしてくるはずです。

タイトルとURLをコピーしました