GASでMathの数学関数や定数など数値計算まとめ(円周率、乱数、累乗、絶対値、三角関数)
Google Apps Script(GAS)には、Mathオブジェクトで色々な数学関数や定数、演算が提供されています。
ランダムな乱数を取得したり、小数の丸め・四捨五入、累乗・べき乗、絶対値や三角関数など様々な数的計算が可能です。
そこでGASで利用できるMathオブジェクトを使った数学関連の関数や定数をまとめて紹介します。
GASには数学関数・定数のMathオブジェクトが用意
Google Apps Script(GAS)のスクリプトでは、色々な数値計算を行います。
その中で、数値の大小を比較したり、小数点以下の丸めたり、色々な数学関数の計算が必要です。
そうした数値計算を実現するため、GASにはMathオブジェクトが用意されています。
Mathは組み込みオブジェクトとして用意されており、インスタンス化することなく、そのまま利用することができます。
Mathオブジェクトに用意されたメソッドやプロパティの中から、利用頻度の高いものをピックアップします。
小数点の切り上げ・切り捨て(ceil,floor,trunc)
Google Apps Script(GAS)では、Mathオブジェクトのメソッドを使った、3種類の小数点を丸める方法があります。
- Math.ceilメソッド(切り上げ)
- Math.floorメソッド(切り捨て)
- Math.truncメソッド(切り捨て)
それぞれ小数点以下を丸める方法や丸めた結果が少し異なります。
詳しい小数を丸めて整数にする各メソッドの違いや使い方は以下の記事で解説しています。
複数の値に対して小数の丸めを行うと、それらを集計した数値には誤差が生じます。
誤差の方向や、要件に応じて、切り捨てまたは切り上げの丸め処理を行うGASのメソッドの選択が必要です。
四捨五入(Math.round)
先程は紹介した小数の丸めはceli(切り上げ)、floor,trunc(切り捨て)と処理が決まっていました。
日常の小数点を切り上げる対応でよく用いられるのが、4以下だと切り捨て、5以上だと切り上げする四捨五入があります。
小数を四捨五入して、整数にするにはMath.roundメソッドを利用します。
前述した切り捨てだと、3.9999でも3になってしまうので、四捨五入を使うことで、誤差を少なくできるメリットがあります。
乱数(Math.random)
Google Apps Script(GAS)のMathオブジェクトで、よく使うのが乱数です。
乱数として、Math.random()を実行すると、0~1のランダムな数値を生成することができます。
そのままであれば、1以上の数値やマイナスの数字が出現することはありませんが、randomで生成した数字に計算を加えることで、整数や負の数のランダム数字を作ることが可能です。
ランダムな要素が含まれるGASスクリプトでは乱数が必要になるので、randomを使って生成しましょう。
絶対値(Math.abs)
絶対値というと中学数学で習った際に、理解しづらく、つまづきやすい概念です。
通常、数字には+符号の正の数と-符号の負の数の2種類がありますが、絶対値は「0からどれだけ離れているかを表す距離の数値」です。
そのため、距離ということで、マイナスが存在せず、符号が存在しません。
Google Apps Script(GAS)では、Math.absメソッド使って、引数の数値を絶対値に変換することができます。
絶対値を使わずに引き算すると、引き算の順番によってはマイナスになることがあります。
「差分が○○以上の場合は」といった条件分岐を用意した際に、プラスとマイナス2つの結果を考慮するのは大変です。
しかし、Math.absで絶対値にしておけば、どちらの引き算でも差分は同じなので、条件分岐もシンプルになります。
最大値・最小値(Math.max,Math.min)
Google Apps Script(GAS)において、最大値や最小値を取得したいケースはよくあります。
AmazonなどのECサイトや価格コムをスクレイピングし、価格情報を取得したうえで、最安値(最小値)を出力したいケースです。
わざわざ取得した数値の大小を判定するスクリプトを用意するのはコードの記述量が増えます。
そこで、Mathオブジェクトに用意されているmax/minメソッドを使えば、最大値と最小値の判定が一発でできます。
GASではMath.maxで引数の中から最も大きな値、Math.minで引数の中から最も小さな値を、メソッドの戻り値として得ることができます。
さらに「配列型の数値データから最大値・最小値を取得する」といった方法もapplyメソッドを利用することで可能です。
累乗・べき乗(Math.pow)
Nªの累乗は、Nをa回掛け算することで算出することができます。
N²といった2乗の場合は、Google Apps Script(GAS)でもN*Nの掛け算で計算できます。
しかし、累乗の数値が大きくなると、通常の算術演算子の「*」だけで表現すると、式が長くなります。
Google Apps Script(GAS)では、べき乗(累乗)などを計算する方法として以下の2つが用意されています。
- Math.pow()メソッド
- 累乗演算子(べき乗演算子)
2乗や3乗といった累乗の計算に加え、平方根や立方根などのべき乗の計算がどちらの方法でも可能です。
累乗演算子はV8ランタイムでのみ利用可能なので、古いRhinoランタイムで稼働しているGASスクリプトでは、Math.powしか利用できません。
なお、累乗とべき乗は似たような表現ですが、数学的には定義が異なります。
累乗は指数部分が自然数または整数である場合に対し、べき乗は指数部分が整数に加え、分数などの実数、複素数も含みます。
三角関数(sin,cos,tan)
Google Apps Script(GAS)で三角関数を使う機会はあまりありません。
Math.sin(num)やMath.cos(num)という記述で、引数に指定した角度に対する正弦関数や余弦関数の値を出力します。
引数に指定する角度はラジアル単位での角度(0~2π)の指定し、90度などの度数は指定すると、想定しない数値が返ってくるので注意が必要です。
通常の三角関数以外にも、アークサインやアークコサインと呼ばれる逆三角関数があり、こうした逆三角関数についても、GASでは利用可能です。
さらに、双曲線関数に用いられるハイパボリックサインやハイパボリックコサインもMathオブジェクトに用意されています。
対数の計算(log,log1p,log2,log10)
Google Apps Script(GAS)のMathオブジェクトでは対数の計算が4パターン用意されています。
- Math.log2(num)
- Math.log10(num)
- Math.log(num)
- Math.log1p(num)
それぞれの対数のメソッドは底に違いがあり、log2は底が2、log10は底が10です。
logとlog1pはどちらもネイピア数eですが、以下のような差異があります。
- log→底をネイピア数e とするnumの対数
- log1p→底をネイピア数e とするnum+1の対数
これらのMathオブジェクトを利用することで、微積分で必要となる対数の計算がGASで可能です。
円周率やネイピア数など数学定数
Google Apps Script(GAS)を使った数値計算のスクリプトには、数学的な定数が必要になることがあります。
GASでは円周率πや自然対数の底(ネイピア数)eなどの数学定数に加え、ルートや対数などの数値がMathオブジェクトのプロパティで設定されています。
円周率やネイピア数の他に、ルート(√)や対数(log)の8つ定数がMathオブジェクトのプロパティで用意されています。
大学数学の内容をGASスクリプトで計算する場合には、円周率からネイピア数、平方根や対数が必要です。
まとめ・終わりに
今回、Google Apps Script(GAS)で利用可能なMathオブジェクトによる数学関数や定数、演算について紹介しました。
絶対値やべき乗(累乗)、対数や三角関数といった様々な数学関数がGASのMathオブジェクトで利用可能です。
その他にも、四捨五入や切り捨て・切り上げによる小数の丸め、最大値・最小値の算出もできます。
GASを使った数値計算を行う場合には今回紹介した数学関数や演算、数学定数が必要なケースが出てくるので、参考にしてみてください。
ディスカッション
コメント一覧
まだ、コメントがありません