GASの小数を四捨五入して整数にする方法!負の数の場合も解説(roundメソッド)

2022年5月29日

Google Apps Script(GAS)で数値処理を行う場合に、小数点以下を四捨五入にして整数に変換したいケースがあります。

そこで、GASのMath.round()メソッドを使って小数を整数にしたり、整数の特定桁を四捨五入する方法を解説します。

GASで小数を四捨五入して整数化したい

Google Apps Script(GAS)でさまざまな処理を実装する中で、数値計算が必要になってきます。

スプレッドシートのセルからデータを取得したり、APIリクエストしてレポートデータを取得します。

そうしてGASで取得したデータを数値計算して、結果を出力する際に小数を四捨五入して整数に変換したい場合があります。

小数のままでは何十桁と表示されていることもあり、見づらいです。

通常で確認する数値が整数である場合には、小数のままよりもデータの視認性が高まります。

四捨五入するroundメソッド

小数を四捨五入して整数にするには、Google Apps Script(GAS)の場合、Mathオブジェクトを利用します。

Mathオブジェクトには数学的な定数のプロパティや、数値計算のメソッドが用意されています。

その中から、roundメソッドを用いると、GASの数値を四捨五入で整数になります。

Math.round('四捨五入したい数値’)

roundメソッドの引数に四捨五入したい数値、または数値が格納された変数を指定することで、四捨五入した整数が戻り値として得ることができます。

roundメソッドで四捨五入するGASサンプルコード

実際にMath.round()メソッドを使って小数を四捨五入して整数に変換するGoogle Apps Script(GAS)のサンプルコードを解説します。

2つの小数に対して四捨五入を行い、切り捨てと切り上げの結果が出力されるパターンです。

function myFunction() {
  //四捨五入したい数値を定義
  let num1 = 3.45;
  let num2 = 3.5;
  //定義直後の数値をログ出力
  console.log('num1=' + num1 + ', num2=' + num2);
  //roundメソッドでそれぞれの数値を四捨五入
  num1 = Math.round(num1);
  num2 = Math.round(num2);
  //四捨五入した数値をログ出力
  console.log('num1=' + num1 + ', num2=' + num2);
}

四捨五入したい小数を変数として定義し、その後、Math.round()メソッドの引数にして四捨五入した結果をログ出力しています。

Google Apps Script(GAS)でMath.roundメソッドを使って小数を四捨五入して整数に変換するサンプルコード

GASのサンプルコードを実行すると、3.45→3、3.5→4と想定通りに四捨五入されていることが確認できます。

整数のある桁で四捨五入したい場合は?

前述したGoogle Apps Script(GAS)のサンプルコードは、小数を四捨五入して整数にするものでした。

では、整数の特定桁で四捨五入するにはどうしたらいいでしょうか?

先程のroundメソッドに整数を入力しても、同じ整数が戻り値になってしまいます。

整数をn桁目で四捨五入したい場合は、以下の手順を実施します。

  1. 数値を10のn乗で割り算
  2. roundメソッドの引数に指定して実行
  3. 四捨五入結果に10のn乗を掛け算

例えば、1245という数字を2桁目で四捨五入したい場合は、

1245÷100=12.45、Math.round(12.45)=12、12×100=1200

となります。

GASの先程のサンプルコードを下記のように修正すると、整数のn桁目の四捨五入も実装可能です。

function myFunction() {
  //四捨五入したい整数を定義
  let num = 1245;
  //定義直後の数値をログ出力
  console.log('num=' + num);
  //10^2=100で除算しroundで四捨五入後100で乗算
  num = Math.round(num/100)*100;
  //四捨五入した数値をログ出力
  console.log('num=' + num);
}
Google Apps Script(GAS)でMath.roundメソッドを使って整数を特定の桁で四捨五入するサンプルコード

実行ログでも、事前の四捨五入の計算どおりに整数の2桁目を四捨五入できました。

負の数をroundで四捨五入するとどうなる?

これまで四捨五入してきたのはプラスの数値である正の数でした。

では、マイナスである負の数をGoogle Apps Script(GAS)のroundメソッドで四捨五入するとどうなるでしょうか?

前述したGASサンプルコードの変数の数値を負の数に変更して、実行してみます。

function myFunction() {
  //四捨五入したい数値を定義
  let num1 = -3.45;
  let num2 = -3.5;
  let num3 = -3.51;
  //定義直後の数値をログ出力
  console.log('num1=' + num1 + ', num2=' + num2 + ', num3=' + num3);
  //roundメソッドでそれぞれの数値を四捨五入
  num1 = Math.round(num1);
  num2 = Math.round(num2);
  num3 = Math.round(num3);
  //四捨五入した数値をログ出力
  console.log('num1=' + num1 + ', num2=' + num2 + ', num3=' + num3);
}
Google Apps Script(GAS)でMath.roundメソッドを使って負の数の小数を四捨五入して整数に変換するサンプルコードは切り捨て・切り上げの注意点

3つの負の数をMath.roundメソッドで四捨五入していますが、-3.5が切り捨てで-3になり、一方、-3.51は-4と切り上げになっています。

これは、負の数の浮動小数点の誤差が影響しているのが原因のようです。

例えば、-3.5000001の場合は、切り上げの-4ですが、-3.5は誤差によって実質-3.5未満として四捨されてしまっています。

負の数で四捨五入を行う場合は、浮動小数点の誤差によって、5付近の数字で想定しない挙動になることを留意しておきましょう。

まとめ・終わりに

今回、Google Apps Script(GAS)で小数の数値を四捨五入して整数に変換する方法を紹介しました。

GASではMathオブジェクトのroundメソッドを利用することで、四捨五入することができます。

整数で特定桁で四捨五入したい場合は、10のn乗で除算(割り算)した数値をMath.roundメソッドで四捨五入し、再度10のn乗を乗算(掛け算)することで計算可能です。

GASで数値計算した小数を四捨五入して整数にする際は、roundメソッドを活用しましょう。