JavaScript/Math

カテゴリ:Book:JavaScript#Math%20

Math オブジェクトは、数学的な定数とメソッドを提供する組み込みオブジェクトです。このオブジェクトは、三角関数、対数関数、乱数生成などの基本的な数学操作を実行するための便利な方法を提供します[1]

説明

Math オブジェクトはコンストラクタではなく、すべてのプロパティとメソッドは静的です。Math オブジェクトのプロパティとメソッドには、Math.プロパティ名またはMath.メソッド名()の形式でアクセスします。

プロパティとメソッド

静的プロパティ

静的プロパティ
名称解説
Math.E オイラー数、自然対数の底 (約 2.718) です。
Math.LN10 10 の自然対数 (約 2.302) です。
Math.LN2 2 の自然対数 (約 0.693) です。
Math.LOG10E e の 10 を底とする対数 (約 0.434) です。
Math.LOG2E e の 2 を底とする対数 (約 1.442) です。
Math.PI 円周率 (約 3.14159) です。
Math.SQRT1_2 1/2 の平方根 (約 0.707) です。
Math.SQRT2 2 の平方根 (約 1.414) です。
Math.name Mathオブジェクトの名前。 "Math"
Math [ Symbol.toStringTag ] Object.prototype.toString()メソッドで使用される、オブジェクトの既定の文字列表現を指定するシンボルです。Mathオブジェクトの場合、"Math"という文字列を返します。

静的アクセサ

静的メソッド

静的メソッド
名称カテゴリー解説
Math.abs()数値操作数値の絶対値を返します。
Math.acos()三角関数数値のアークコサイン(逆余弦)を返します。
Math.acosh()双曲線関数数値の逆双曲線余弦を返します。
Math.asin()三角関数数値のアークサイン(逆正弦)を返します。
Math.asinh()双曲線関数数値の逆双曲線正弦を返します。
Math.atan()三角関数数値のアークタンジェント(逆正接)を返します。
Math.atan2()三角関数2つの数値のアークタンジェント(逆正接)を返します。
Math.atanh()双曲線関数数値の逆双曲線正接を返します。
Math.cbrt()数値操作数値の立方根を返します。
Math.ceil()数値操作数値の小数点以下を切り上げた整数を返します。
Math.clz32()ビット操作数値の32ビット表現での先頭のゼロの数を返します。
Math.cos()三角関数数値のコサイン(余弦)を返します。
Math.cosh()双曲線関数数値の双曲線余弦を返します。
Math.exp()指数関数数値の指数関数(e^x)を返します。
Math.expm1()指数関数数値の指数関数(e^x - 1)を返します。
Math.floor()数値操作数値の小数点以下を切り捨てた整数を返します。
Math.fround()数値操作数値を最も近い32ビット単精度浮動小数点数に変換します。
Math.hypot()数値操作与えられた数値の平方和の平方根(ユークリッド距離)を返します。
Math.imul()ビット操作2つの数値の32ビット整数乗算を返します。
Math.log()対数関数数値の自然対数(底はe)を返します。
Math.log10()対数関数数値の常用対数(底は10)を返します。
Math.log1p()対数関数数値の1を加えた値の自然対数を返します。
Math.log2()対数関数数値の2を底とする対数を返します。
Math.max()数値操作与えられた数値のうち最大の値を返します。
Math.min()数値操作与えられた数値のうち最小の値を返します。
Math.pow()数値操作与えられた数値のべき乗を返します。
Math.random()乱数生成0以上1未満のランダムな数値を返します。
Math.round()数値操作数値の小数点以下を四捨五入した整数を返します。
Math.sign()数値操作数値の符号を返します(正: 1、負: -1、ゼロ: 0)。
Math.sin()三角関数数値のサイン(正弦)を返します。
Math.sinh()双曲線関数数値の双曲線正弦を返します。
Math.sqrt()数値操作数値の平方根を返します。
Math.tan()三角関数数値のタンジェント(正接)を返します。
Math.tanh()双曲線関数数値の双曲線正接を返します。
Math.trunc()数値操作数値の小数点以下を切り捨てた整数を返します。
  • カテゴリー:
    • 数値操作: 数値の変換や操作を行うメソッド。
    • 三角関数: 三角関数(サイン、コサイン、タンジェントなど)を計算するメソッド。
    • 双曲線関数: 双曲線関数(ハイパボリックサイン、コサインなど)を計算するメソッド。
    • 指数関数: 指数や対数を計算するメソッド。
    • ビット操作: ビットレベルの操作を行うメソッド。
    • 乱数生成: ランダムな数値を生成するメソッド。

Math.random() を使用して乱数を生成するプログラム

以下のプログラムは、Math.random() を使用して指定された範囲内の乱数を生成します。

// 0以上1未満の乱数を生成
console.log(Math.random()); // 例: 0.7564321789

// min以上max未満の乱数を生成する関数
function getRandomArbitrary(min, max) {
  return Math.random() * (max - min) + min;
}

console.log(getRandomArbitrary(1, 10)); // 例: 5.327890123

// min以上max以下の整数の乱数を生成する関数
function getRandomInt(min, max) {
  min = Math.ceil(min);
  max = Math.floor(max);
  return Math.floor(Math.random() * (max - min + 1)) + min;
}

console.log(getRandomInt(1, 10)); // 例: 7

このプログラムでは、Math.random() を使用して様々な範囲の乱数を生成する方法を示しています。

三角関数を使用して円上の点を計算するプログラム

以下のプログラムは、Math.sin()Math.cos() を使用して円上の点の座標を計算します。

// 円の中心座標と半径
const centerX = 100;
const centerY = 100;
const radius = 50;

// 角度(ラジアン)に対する円上の点の座標を計算
function getPointOnCircle(angle) {
  return {
    x: centerX + radius * Math.cos(angle),
    y: centerY + radius * Math.sin(angle)
  };
}

// 0度の点の座標
const point0 = getPointOnCircle(0);
console.log(point0); // { x: 150, y: 100 }

// 90度(π/2ラジアン)の点の座標
const point90 = getPointOnCircle(Math.PI / 2);
console.log(point90); // { x: 100, y: 150 }

// 円周上の8点の座標を計算
for (let i = 0; i < 8; i++) {
  const angle = (i / 8) * 2 * Math.PI;
  const point = getPointOnCircle(angle);
  console.log(`点${i}: (${point.x.toFixed(2)}, ${point.y.toFixed(2)})`);
}

このプログラムでは、Math.sin()Math.cos() を使用して円周上の点の座標を計算しています。

Math.max() と Math.min() を使用して配列内の最大値と最小値を見つけるプログラム

以下のプログラムは、Math.max()Math.min() を使用して配列内の最大値と最小値を見つけます。

const numbers = [5, 2, 9, 1, 7, 4, 6, 3, 8];

// 配列内の最大値を見つける
const max = Math.max(...numbers);
console.log(`最大値: ${max}`); // 最大値: 9

// 配列内の最小値を見つける
const min = Math.min(...numbers);
console.log(`最小値: ${min}`); // 最小値: 1

// 配列が空の場合は-Infinityと+Infinityが返される
const emptyArray = [];
console.log(Math.max(...emptyArray)); // -Infinity
console.log(Math.min(...emptyArray)); // Infinity

このプログラムでは、スプレッド演算子(...)を使用して配列の要素を Math.max()Math.min() に渡し、配列内の最大値と最小値を見つけています。

注意点

  • 精度: JavaScript の Number 型は IEEE 754 浮動小数点数を使用しているため、数値計算には精度の限界があります。
  • NaN: 数学的に定義されていない結果(例: 負の数の平方根)を計算しようとすると、NaN が返されます。
  • 引数の型変換: Math のメソッドは、数値以外の引数を自動的に数値に変換しようとします。
  • Math.random() のセキュリティ: Math.random() は暗号的に安全な乱数ではありません。暗号用途には Crypto.getRandomValues() を使用してください。

脚註

  1. Math オブジェクトは、JavaScript での数学計算を簡単に行うために使用されます。

関連項目

サブページ

外部リンク

カテゴリ:Book:JavaScript#Math%20 カテゴリ:JavaScript
カテゴリ:Book:JavaScript カテゴリ:JavaScript カテゴリ:Pages using the JsonConfig extension