もうこのブログは自分への戒めに近いです。
数式項目の関数をちゃんと正負いれて確認しておけばよかったなぁって強く思ったのと、他のメンバーに同じ思いをしてほしくないので、備忘録&豆知識として残しておこうと思います。
皆さんも結構お世話になっている数式項目で使う関数についてお話します。
数式はいろいろな関数を呼び出して、計算や判定なども実装できてかなり重宝している機能で、皆さんも一度は触ったことがあると思います。
そんな数式の中の関数で、「うげぇ」って思ったのが、こちら・・・
「MFLOOR」です!
皆さんは使ったことありますか?
結果からいうと、正の場合は小数点以下切り捨て、負の場合は切り上げっていう動きなんです。
つまり正の時と負の時で動きが違うんです。
Salesforceのヘルプいわく「数値を最も近い整数 (負の場合は 0 から遠い方) に切り捨てます。」だそうです。
正直「え?どういうこと」って感じですよね。実際の値を入れながら説明していきます。
使ってみる
数式で書くと結果は以下のようになります。
MFLOOR(1.3) // 結果:1
MFLOOR(-1.3) // 結果:2
「えぇぇぇぇ!」って思いませんか?
こんな動きする関数、どこで使うのぉって思いませんか?
少しこの関数について解説すると以下イメージのように、下へ下への変換されるのがMFLOOR関数というものなんです。
今回のお客様は売上を赤黒管理しているので、赤の金額(負)を黒の金額(正)で相殺するっていうことをやっていたので、この関数使ったら動きが違うから差額が出てしまったんです。なんでやねんって調べて見たら、「MFLOOR」を使用していることが原因だという事が分かりました。
金額等で使うべき関数は、以下を使用した方が安全だと思います。
- ROUND ・・・ 正負ともに四捨五入
- CEILING ・・・ 正負ともに切り上げ
- FLOOR ・・・ 正負ともに切り下げ
詳しくは、ヘルプを参照ください。
MFLOORって必要だから存在する関数だと思うけど、一体どんなケースで使うんでしょうか?もし使ってるって方は、ケース教えてください。
以上、サクッと読めるsalesforce豆知識でした。