【GAS GoogleAppsScript | スプレッドシート】数学演算を行うMathオブジェクト

スポンサーリンク

数学演算を行うMathオブジェクト

プログラミングを行うときに、必ずついてまわってくるのが、数学の演算です。ワークシート上の関数でも関数として用意されているものも多いですが、GASでもMathオブジェクトという形で様々な演算を簡単に行えるオブジェクトが用意されています。

※Mathオブジェクトのメンバーは全て静的メンバーなので、new演算子でインスタンスを作成することは出来ません。

Mathオブジェクトの主なメンバー

早速ですが、Mathオブジェクトの主なメンバーはこちらです。

分類 メンバー 説明
プロパティ Math.E ネイピア数(オイラー数)
プロパティ Math.LN2 2の自然対数
プロパティ Math.LN10 10の自然対数
プロパティ Math.LOG2E 2を底としたEの対数
プロパティ Math.LOG10E 10を底としたEの対数
プロパティ Math.PI 円周率
プロパティ Math.SQRT1_2 1/2の平方根
プロパティ Math.SQRT2 2の平方根
メソッド Math.abs(x) xの絶対値を返す
メソッド Math.ceil(x) xの少数点以下を切り上げた整数を返す
メソッド Math.floor(x) xの小数点以下を切り捨てた整数を返す
メソッド Math.round(x) xを四捨五入した整数を返す
メソッド Math.exp(x) ネイピア数(オイラー数)のx乗を返す
メソッド Math.log(x) xの自然対数を返す
メソッド Math.max(x,y,...) x,y...の中で最大値を返す
メソッド Math.min(x,y,...) x,y...の中で最小値を返す
メソッド Math.pow(x,y) xのy乗を返す
メソッド Math.random() 0以上1未満の乱数を返す
メソッド Math.sqrt(x) xの平方根を返す
メソッド Math.sin(x) xのサインを返す
メソッド Math.cos(x) xのコサインを返す
メソッド Math.tan(x) xのタンジェントを返す
メソッド Math.acos(x) xのアークサインを返す
メソッド Math.asin(x) xのアークコサインを返す
メソッド Math.atan(x) xのアークタンジェントを返す
メソッド Math.atan2(x) y/xのアークタンジェントを返す

使い方

それでは、サンプルコードで、どんな動きになるのか確認しましょう!

function test(){
  
  
// プロパティ

  // ネイピア数(オイラー数)
  Logger.log(Math.E)         // 2.718281828459045
  
  // 2の自然対数
  Logger.log(Math.LN2)       // 0.6931471805599453
  
  // 10の自然対数
  Logger.log(Math.LN10)      // 2.302585092994046
  
  // 2を底としたEの対数
  Logger.log(Math.LOG2E)     // 1.4426950408889634

  // 10を底としたEの対数
  Logger.log(Math.LOG10E)    // 0.4342944819032518
  
  // 円周率
  Logger.log(Math.PI)        // 3.141592653589793
  
  // 1/2の平方根
  Logger.log(Math.SQRT1_2)   // 0.7071067811865476
  
  // 2の平方根
  Logger.log(Math.SQRT2)     // 1.4142135623730951

  

// メソッド

  // xの絶対値を返す
  var x = -123
  Logger.log(Math.abs(x))       // 123.0
 
  // xの少数点以下を切り上げた整数を返す
  var x = 123.456
  Logger.log(Math.ceil(x))      // 124.0
  
  // xの小数点以下を切り捨てた整数を返す
  var x = 123.456
  Logger.log(Math.floor(x))     // 123.0
  
  // xを四捨五入した整数を返す
  var x = 123.456
  Logger.log(Math.round(x))     // 123.0
  
  var x = 123.567
  Logger.log(Math.round(x))     // 124.0
  
  // ネイピア数(オイラー数)のx乗を返す
  var x = 2
  Logger.log(Math.exp(x))       // 7.38905609893065
  
  // xの自然対数を返す
  var x = 10
  Logger.log(Math.exp(x))       // 22026.465794806718
  
  // x,y...の中で最大値を返す
  Logger.log(Math.max(1, 5, 10, 100))   // 100.0
  
  // x,y...の中で最小値を返す
  Logger.log(Math.min(1, 5, 10, 100))   // 1.0
  
  // xのy乗を返す(pow(x,y))
  Logger.log(Math.pow(2, 4))   // 16.0
  
  // 0以上1未満の乱数を返す
  Logger.log(Math.random())   // 0.3172100165908738 (実行するたびに違う数値になる)

  // xの平方根を返す
  var x = 2
  Logger.log(Math.sqrt(x))    // 1.4142135623730951
  
  // xのサインを返す
  var x = 2
  Logger.log(Math.sin(x))    // 0.9092974268256817
  
  // xのコサインを返す
  var x = 2
  Logger.log(Math.cos(x))    // -0.4161468365471424
  
  // xのタンジェントを返す
  var x = 2
  Logger.log(Math.tan(x))    // -2.185039863261519
  
  
  // xのアークサインを返す
  var x = 10
  Logger.log(Math.asin(x))    // NaN
  
  // xのアークコサインを返す
  var x = 10
  Logger.log(Math.acos(x))    // NaN
  
  // xのアークタンジェントを返す
  var x = 10
  Logger.log(Math.atan(x))    // 1.4711276743037347
  
  
  // y/xのアークタンジェントを返す
  var x = 10
  var y = 2
  Logger.log(Math.atan2(y, x))   // 0.19739555984988078
  
}

全て静的メンバーなので特に悩むようなところはないかと思います。

まとめ

数学演算を行うMathオブジェクトを紹介しました!これらを一工夫することで、色々実現出来ることもありますので、また紹介させてもらいます!