Power Automate では整数または倍精度浮動小数点数などの数値データを扱えます。
たとえば、変数を追加する際にこうしたデータ型を指定できるようになっています。次の画面は英語表記ですが、Integer(インテジャー)が整数、Float(フロート)が倍精度小数点数です。
計算する
ではこうした数値データを使って計算を試してみましょう。たとえば、10÷5 を計算します。式としてはdiv関数を用い、「div(10,5)」となります。
結果は2です。
小数のある割り算
では、小数のある割り算を行ってみましょう。11÷5 を計算するため式は「div(11,5)」とします。
結果は2.2 となるはずですが、2 となっています。
整数同士の計算となり、結果は整数部分のみしか返ってきません。そのため小数が返ってくることもあることを前提にするために最初から11と5の数字を倍精度小数点数として扱いましょう。これには float関数を使います。式は「div(float(11),float(5))」です。
ということで、結果が小数になる場合は変数として用意する場合もFloat型として宣言しておく必要があることがわかります。
ちなみに小数は16桁まで扱えます。次の図は割り切れない 1÷3を行っているところです。
四捨五入
さて、小数を扱う場合、パーセントに置き換えるときなど四捨五入が必要なことがあります。これはどうやるのでしょうか? 試しに次のように 270÷366 を計算してみましょう。
結果は次の通りで「0.7377049180327869」が返ってきます。
ではこれを100分率にするためにmul関数を使って100倍し、整数のみにするために formatNumber関数を使います。式は「formatNumber(mul(div(float(270),float(366)),100),'###') 」です。
結果は 74 となったことがわかります。もともと100倍すれば、73.77... だったわけですから、小数点第一位で四捨五入されたことがわかります。
丸め誤差
倍精度小数点数を使えるということですが、当然、丸め誤差が生じます。試しに「add(float(0.1), float(0.2))」を計算します。
すると結果は 0.3 ではなく「0.3000000000000004」となります。
そこで利用したいのが decimal 関数です。変数を初期化する際には decimal は選択できないため式の中で利用する必要があります。式を「add(decimal(0.1), decimal(0.2))」とします。
これにより結果は0.3 となります。
まとめ
ここまで見てきたように Power Automate フローの中で演算を行う際にはデータ型に注意し、適切な型を明示して利用する必要があることがわかります。
コメント