「Number」型でできること:リテラル、変数、演算、メソッドまで徹底解説


このガイドでは、「Number」型の仕組み、リテラル表記、変数宣言、主な演算、型変換、および便利なメソッドについて、初心者にも分かりやすく解説します。

  • メモリ効率: 整数より多くのメモリを消費
  • 内部表現: IEEE 754 倍精度浮動小数点形式 (64ビット)
  • 表現: 整数 (1, 2, 3) と小数 (1.2, 3.14, -5.2) の両方を格納
  • データ型: 数値を表す

リテラル表記

数値を直接コード内に記述する方法です。

  • 2進数: 0b 接頭辞を使用。例:0b1111, 0b10101, 0b00110101
  • 8進数: 0o 接頭辞を使用。例:0o765, 0o251, 0o123
  • 16進数: 0x 接頭辞を使用。例:0xFF, 0x1F, 0xAB12
  • 10進数: デフォルト。例:123, -4.5, 0.001

変数宣言

var, let, const キーワードを用いて変数を宣言し、数値を代入することができます。

var num1 = 10;
let num2 = 3.14;
const num3 = -52;

演算

様々な演算子を組み合わせて、数値同士の計算を実行できます。

  • ビット演算子: &, |, ^, ~, <<, >>, >>>
  • 論理演算子: &&, ||, !
  • 比較演算子: >, <, >=, <=, ==, !=
  • 算術演算子: +, -, *, /, %

型変換

数値を別の型に変換できます。

  • toString(): 数値を文字列に変換
  • parseFloat(): 文字列を小数に変換
  • parseInt(): 文字列を整数に変換
  • Number(): 文字列を数値に変換

「Number」型には、数値操作に役立つ便利なメソッドが用意されています。

  • isNaN(): 非数値かどうかを判定
  • isFinite(): 有限な値かどうかを判定
  • valueOf(): プリミティブ値を返す
  • toExponential(): 指数表記に変換
  • toFixed(): 小数点以下の桁数を指定して文字列に変換
  • 特殊な値: NaN (非数値) と Infinity (無限大) は、特別な値として扱われます。
  • 限界値: 表現できる最小値と最大値は、Number.MIN_VALUENumber.MAX_VALUE で確認できます。
  • 精度: JavaScript の数値型は、およそ15桁の有効数字を保持できます。

「Number」型は、JavaScriptプログラミングにおいて最も基本的なデータ型の一つです。



数値リテラルと変数宣言

// 10進数のリテラルと変数宣言
var num1 = 10;
console.log(num1); // 10 を出力

// 小数点リテラルと変数宣言
var num2 = 3.14;
console.log(num2); // 3.14 を出力

// 16進数リテラルと変数宣言
var num3 = 0xFF;
console.log(num3); // 255 を出力

演算

// 基本的な算術演算
var sum = 10 + 5;
var difference = 15 - 3;
var product = 4 * 6;
var quotient = 20 / 5;
var remainder = 12 % 5;

console.log("合計:", sum); // 15 を出力
console.log("差:", difference); // 12 を出力
console.log("積:", product); // 24 を出力
console.log("商:", quotient); // 4 を出力
console.log("余り:", remainder); // 2 を出力

// 比較演算
var num1 = 10;
var num2 = 15;

console.log(num1 > num2); // false を出力
console.log(num1 < num2); // true を出力
console.log(num1 == num2); // false を出力
console.log(num1 != num2); // true を出力

// 論理演算
var isStudent = true;
var isAdult = false;

console.log(isStudent && isAdult); // false を出力
console.log(isStudent || isAdult); // true を出力
console.log(!isStudent); // false を出力

型変換

// 文字列を数値に変換
var strNum = "123";
var num1 = Number(strNum);
console.log(num1); // 123 を出力

// 数値を文字列に変換
var num2 = 3.1415;
var strNum = num2.toString();
console.log(strNum); // "3.1415" を出力

// 文字列の一部を数値に変換
var str = "Hello, 123 World!";
var num = parseInt(str.substring(7, 10));
console.log(num); // 123 を出力
// 小数点以下の桁数を指定して文字列に変換
var num = 123.456789;
var str1 = num.toFixed(2); // "123.46" を出力
var str2 = num.toFixed(5); // "123.45678" を出力

// 指数表記に変換
var num = 0.001234;
var str = num.toExponential(); // "1.234e-04" を出力

// プリミティブ値を返す
var num = 10;
var primitiveNum = num.valueOf();
console.log(primitiveNum); // 10 を出力

// 有限な値かどうかを判定
var num1 = 10;
var num2 = Infinity;

console.log(isFinite(num1)); // true を出力
console.log(isFinite(num2)); // false を出力

// 非数値かどうかを判定
var num1 = 10;
var str = "Hello";

console.log(isNaN(num1)); // false を出力
console.log(isNaN(str)); // true を出力


文字列型

  • デメリット:
    • 数値演算には変換が必要
    • 計算処理には非効率
  • メリット:
    • 文字列操作関数で容易に処理できる
    • データベースへの保存やネットワーク通信に適している
  • 例:ユーザー入力の年齢、商品ID、ファイルパスなど
  • 数値を文字列として保持する場合に適しています。
// 文字列型で年齢を保持
var age = "30";

// 数値に変換して計算
var yearsInCentury = age * 100;
console.log(yearsInCentury); // 3000 を出力

論理型 (Boolean)

  • デメリット:
    • 数値演算には変換が必要
    • 誤解を招く可能性がある (true/false が数値として誤って解釈される)
  • メリット:
    • 論理演算に最適化されている
    • メモリ効率が良い
  • 例:条件分岐の判定、フラグ管理など
  • 論理値 (true/false) を扱う場合に適しています。
// 論理型で判定フラグを管理
var isStudent = true;

if (isStudent) {
  console.log("学生です");
} else {
  console.log("学生ではありません");
}

配列型

  • デメリット:
    • 計算処理には変換が必要
    • 非常に大きな数値や小数には不向き
  • メリット:
    • インデックスを用いた個別アクセスが可能
    • メモリ効率が比較的良い
  • 例:選択肢、IDの集合、有限なカウンタなど
  • 少数の整数を扱う場合に適しています。
// 配列型で点数を保持
var scores = [90, 85, 75];

// 合計点を計算
var total = 0;
for (var score of scores) {
  total += score;
}
console.log("合計点:", total); // 250 を出力

BigInt 型

  • デメリット:
    • 比較的新しい機能であり、一部のブラウザでは対応していない
    • 計算処理やメモリ使用量が増加する
  • メリット:
    • 従来の整数の範囲を超える数値を扱える
  • 例:暗号化、科学計算、高精度な財務計算など
  • 整数としては表現できない非常に大きな値を扱う場合に適しています。
// BigInt 型で大きな素数を扱う
const bigIntNum = 12345678901234567890n;
console.log(bigIntNum); // 12345678901234567890 を出力

// BigInt 型と通常の整数の演算
const result = bigIntNum + 1000;
console.log(result); // 12345678901234568890 を出力

カスタムデータ型

  • デメリット:
    • 開発・保守コストがかかる
    • 他のデータ型との互換性が低い可能性がある
  • メリット:
    • アプリケーションに特化したデータ表現が可能
    • 柔軟性と制御性に優れる
  • 例:通貨、単位、複雑な数値構造など
  • 独自のロジックや機能を持つ数値表現が必要な場合に適しています。
// 通貨を表すカスタムデータ型
class Currency {
  constructor(amount, currencyCode) {
    this.amount = amount;
    this.currencyCode = currencyCode;
  }

  getValue() {
    return this.amount + " " + this.currencyCode;
  }
}

// カスタムデータ型の使用例
var currency = new Currency(1000, "USD");
console.log(currency.getValue()); // $1000 を出力

状況に応じて適切な代替手段を選択することが重要です。

  • 非常に大きな数値を扱う場合は、BigInt 型が適切です
  • 少数の整数を扱う場合は、配列型がメモリ効率に優れています。
  • 論理値を扱う場合は、論理型が効率的です。
  • 数値以外の情報を含む場合は、文字列型が適しています。