2024年9月26日 (木)

Power Automate: 数値のデータ型と演算

Adobestock_552355848_2

Power Automate では整数または倍精度浮動小数点数などの数値データを扱えます。

たとえば、変数を追加する際にこうしたデータ型を指定できるようになっています。次の画面は英語表記ですが、Integer(インテジャー)が整数、Float(フロート)が倍精度小数点数です。

20240926_153047

計算する

ではこうした数値データを使って計算を試してみましょう。たとえば、10÷5 を計算します。式としてはdiv関数を用い、「div(10,5)」となります。

20240926_150713

結果は2です。

20240926_151012

小数のある割り算

では、小数のある割り算を行ってみましょう。11÷5 を計算するため式は「div(11,5)」とします。

20240926_150850

結果は2.2 となるはずですが、2 となっています。

20240926_151012_2

整数同士の計算となり、結果は整数部分のみしか返ってきません。そのため小数が返ってくることもあることを前提にするために最初から11と5の数字を倍精度小数点数として扱いましょう。これには float関数を使います。式は「div(float(11),float(5))」です。

20240926_151251

結果は2.2となりました!
20240926_151313

ということで、結果が小数になる場合は変数として用意する場合もFloat型として宣言しておく必要があることがわかります。

ちなみに小数は16桁まで扱えます。次の図は割り切れない 1÷3を行っているところです。

20240926_151333

四捨五入

さて、小数を扱う場合、パーセントに置き換えるときなど四捨五入が必要なことがあります。これはどうやるのでしょうか? 試しに次のように 270÷366 を計算してみましょう。

20240926_151632

結果は次の通りで「0.7377049180327869」が返ってきます。

20240926_172735

ではこれを100分率にするためにmul関数を使って100倍し、整数のみにするために formatNumber関数を使います。式は「formatNumber(mul(div(float(270),float(366)),100),'###') 」です。

20240926_151904

結果は 74 となったことがわかります。もともと100倍すれば、73.77... だったわけですから、小数点第一位で四捨五入されたことがわかります。

丸め誤差

倍精度小数点数を使えるということですが、当然、丸め誤差が生じます。試しに「add(float(0.1), float(0.2))」を計算します。

20240926_154219

すると結果は 0.3 ではなく「0.3000000000000004」となります。20240926_154235

そこで利用したいのが decimal 関数です。変数を初期化する際には decimal は選択できないため式の中で利用する必要があります。式を「add(decimal(0.1), decimal(0.2))」とします。

20240926_155159

これにより結果は0.3 となります。

20240926_155217

まとめ

ここまで見てきたように Power Automate フローの中で演算を行う際にはデータ型に注意し、適切な型を明示して利用する必要があることがわかります。

コメント