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