JavaScriptの学習・参考リファレンス/ドキュメント

JavaScript、ECMAScriptの学習と参考メモ 入門~初心者~中級者~上級者を目指して

Math 数学定数と関数

Mathオブジェクトには、JavaScriptで使うための数学定数と関数の静的なプロパティ・メソッドが用意されています。

数学定数 (静的なプロパティ)

console.log(Math.E); // 2.718281828459045 ネイピア数
console.log(Math.LN2); // 0.6931471805599453 2の自然対数
console.log(Math.LN10); // 2.302585092994046 10の自然対数
console.log(Math.LOG2E); // 1.4426950408889634 2を底としたネイピア数の対数
console.log(Math.LOG10E); // 0.4342944819032518 ネイピア数の常用対数
console.log(Math.PI); // 3.141592653589793 円周率
console.log(Math.SQRT1_2); // 0.7071067811865476 2^(1/2)の逆数
console.log(Math.SQRT2); // 1.4142135623730951 2^(1/2)

数学関数 (静的なメソッド)

最小値 Math.min と 最大値 Math.max

console.log(Math.min(3,9,2,5)); // 2
console.log(Math.max(3,9,2,5)); // 9

let array = [3,9,2,5];
console.log(Math.min(array)); // NaN
console.log(Math.max(array)); // NaN

console.log(Math.min(...array)); // 2
console.log(Math.max(...array)); // 9

疑似乱数 Math.random

console.log(Math.random()); // 0以上1未満の乱数
console.log(Math.random() * 10 ); // 0以上10未満の乱数
console.log(Math.floor(Math.random() * 10)); // 0以上9以下のランダムな整数
console.log(Math.random() * (10 - 5) + 5); // 5以上10未満の乱数
console.log(Math.floor(Math.random() * (10 - 5) + 5)); // 5以上9以下のランダムな整数

絶対値 Math.abs

console.log(Math.abs(1)); // 1
console.log(Math.abs(0)); // 0
console.log(Math.abs(-1)); // 1

累乗 Math.pow

console.log(Math.pow(2,10)); // 1024 = 2^10
console.log(Math.pow(-1,3)); // -1 = (-1)^3
console.log(Math.pow(2,1/2)); // 1.4142135623730951

符号 Math.sign

console.log(Math.sign(10)); // 1
console.log(Math.sign(0)); // 0
console.log(Math.sign(-10)); // -1

整数値の取得

// 指定した値以上の最小の整数 Math.ceil
console.log(Math.ceil(12.4)); // 13
console.log(Math.ceil(-12.4)); // -12

// 指定した値以下の最大の整数 Math.floor
console.log(Math.floor(12.4)); // 12
console.log(Math.floor(-12.4)); // -13

// 四捨五入した整数 Math.round
console.log(Math.round(12.4)); // 12
console.log(Math.round(12.5)); // 13
console.log(Math.round(-12.5)); // -12
console.log(Math.round(-12.6)); // -13

// 小数点以下を除外した整数 Math.trunc
console.log(Math.trunc(12.4)); // 12
console.log(Math.trunc(-12.4)); // -12

平方根と立方根、平方数の和の立方根

// 平方根 Math.sqrt
console.log(Math.sqrt(2)); // 1.4142135623730951
console.log(Math.sqrt(25)); // 5
console.log(Math.sqrt(-25)); // NaN

// 立方根 Math.cbrt
console.log(Math.cbrt(2)); // 1.2599210498948732
console.log(Math.cbrt(125)); // 5
console.log(Math.cbrt(-125)); // -5

// 平方数の和の平方根 Math.hypot
console.log(Math.hypot(3,4)); // 5
console.log(Math.hypot(6,-8)); // 10
console.log(Math.hypot(1,2,3,4,5)); // 7.416198487095663

2進数32ビット整数値の先頭0の個数 Math.clz32

let number1 = 1; // 0b00000000000000000000000000000001
console.log(Math.clz32(number1)); // 31

let number2 = 1431655765; // 0b01010101010101010101010101010101
console.log(Math.clz32(number2)); // 1

ビット乗算 Math.imul

console.log(Math.imul(1, 1)); // 1
console.log(Math.imul(-1, 1)); // -1

単精度浮動小数点数の値 Math.fround

console.log(Math.fround(0));
console.log(Math.fround(1));
console.log(Math.fround(1.2)); //1.2000000476837158
console.log(Math.fround(1.25)); //1.25

ネイピア数の指数関数

//ネイピア数の指数関数 Math.exp
console.log(Math.exp(1)); // 2.718281828459045
//ネイピア数の指数関数から1引いた値 Math.expm1
console.log(Math.expm1(1)); //1.718281828459045

対数

//自然対数 Math.log
console.log(Math.log(Math.E**2)); // 2
//1加算した値の自然対数 Math.log1p
console.log(Math.log1p(Math.E - 1)); // 1
//常用対数 Math.log10
console.log(Math.log10(1000)); // 3
//2を底とした対数 Math.log2
console.log(Math.log2(1024)); // 10

正弦関数 Math.sin、 余弦関数 Math.cos、 正接関数 Math.tan

角度はラジアンを使用する。他も同様。

console.log(Math.sin(0)); // 0
console.log(Math.sin(Math.PI / 6)); // 0.49999999999999994
console.log(Math.sin(Math.PI / 2)); // 1
console.log(Math.sin(Math.PI)); // 1.2246467991473532e-16

console.log(Math.cos(0)); // 1
console.log(Math.cos(Math.PI / 3)); // 0.5000000000000001
console.log(Math.cos(Math.PI / 2)); // 6.123233995736766e-17
console.log(Math.cos(Math.PI)); // -1

console.log(Math.tan(0)); // 0
console.log(Math.tan(Math.PI / 4)); // 0.9999999999999999
console.log(Math.tan(Math.PI / 2)); // 16331239353195370
console.log(Math.tan(Math.PI)); // -1.2246467991473532e-16

正弦関数の逆関数 Math.asin、余弦関数の逆関数 Math.acos、正接関数の逆関数 Math.atan

console.log(Math.asin(-1)); // -1.5707963267948966 ≓ -π/2
console.log(Math.asin(0)); // 0
console.log(Math.asin(1/2)); // 0.5235987755982989  ≓ π/6
console.log(Math.asin(Math.SQRT1_2)); // 0.7853981633974484  ≓ π/4
console.log(Math.asin(1)); // 1.5707963267948966 ≓ π/2

console.log(Math.acos(1)); // 0
console.log(Math.acos(Math.SQRT1_2)); // 0.7853981633974483 ≓ π/4
console.log(Math.acos(0)); // 1.5707963267948966 ≓ π/2
console.log(Math.acos(-Math.SQRT1_2)); // 2.356194490192345 ≓ 3π/4
console.log(Math.acos(-1)); // 3.141592653589793 ≓ π

console.log(Math.atan(-Infinity)); // -1.5707963267948966 ≓ -π/2
console.log(Math.atan(-1)); // -0.7853981633974483 ≓ -π/4
console.log(Math.atan(0)); // 0
console.log(Math.atan(1)); // 0.7853981633974483 ≓ π/4
console.log(Math.atan(Infinity)); // 1.5707963267948966 ≓ π/2

指定した点と正のx軸のなす角度 Math.atan2

Math.atan2(y,x)で原点と点(x,y)を通る直線と正のx軸のなす角度を取得する。

console.log(Math.atan2(-Infinity, 1)); // -1.5707963267948966 ≓ -π/2
console.log(Math.atan2(0, 1)); // 0
console.log(Math.atan2(0, Infinity)); // 0
console.log(Math.atan2(2, 2)); // 0.7853981633974483 ≓ π/4
console.log(Math.atan2(Math.sqrt(3), 1)); // 1.0471975511965976 ≓ π/3
console.log(Math.atan2(Infinity, 1)); // 1.5707963267948966 ≓ π/2

双曲線正弦関数 Math.sinh、双曲線余弦関数 Math.cosh、双曲線正接関数 Math.tanh

$$ \operatorname {sinh} x={e^{x}-e^{-x} \over 2} , \operatorname {cosh} x={e^{x}+e^{-x} \over 2} , \operatorname {tanh} x={\operatorname {sinh} x \over \operatorname {cosh} x}$$

console.log(Math.sinh(0)); // 0
console.log(Math.sinh(1)); // 1.1752011936438014

console.log(Math.cosh(0)); // 1
console.log(Math.cosh(1)); // 1.5430806348152437

console.log(Math.tanh(0)); // 0
console.log(Math.tanh(1)); // 0.7615941559557649

双曲線正弦関数の逆関数 Math.asinh、双曲線余弦関数の逆関数 Math.acosh、双曲線正接関数の逆関数 Math.atanh

console.log(Math.asinh(0)); // 0
console.log(Math.asinh(1.1752011936438014)); // 1

console.log(Math.acosh(1)); // 0
console.log(Math.acosh(1.5430806348152437)); // 1

console.log(Math.atanh(0)); // 0
console.log(Math.atanh(0.7615941559557649)); // 0.9999999999999999
作成日 : 2020年06月14日