お世話になっております。
やりたいこと:金額表示時に、小数点以下含めで最大4桁になるよう、切り捨て処理する。
※小数点以下のあるなし、桁数、正か負か、が決まっていません。
ex)
3.333⇒3.333
3.3333⇒3.333
3333.3⇒3333
今やっている処理:
①金額を千単位に変更(金額/1000)
②FLOOR(①の結果*100)/100
結果、正の場合は想定通りになったのですが、
負の場合は、繰り上がりになってしまいました(No12の4列目)。
負の場合は切り捨ての概念が異なるのでしょうか。
また、負の場合も正の場合同様の切り捨て処理をする方法、
若しくは現やり方以外の方法があればご教示いただきたく存じます。
よろしくお願いいたします。
15 Antworten

理解しやすさという点では、私の式よりもmomokaさんの式のほうが断然分かりやすいですね。
この式でもやりたいことが実現できている(もっと言うと穴がない)のであれば、これでよいと思います。
ただ計算の重さという点では、IFの分岐がやたら多いので、本番環境のデータ量によっては重くなる可能性があります。
もしこの式をベースに少し変更を加えるとしたら、IFを階層化して分岐判定の回数を減らしてあげましょう。
IF文は該当するまで上から順に律儀に判定し続けるので、先の式だと単位がGのときに、該当部分まで辿り着くのに最低9回・最大12回の判定をすることになります。
これを次のようにすると、「単位がGの時」の部分に辿り着くまでの判定を3回に、その次の判定は4回までしかないので、最低4回・最大7回に減らすことができます。
また、「Aのとき、Bのとき、Cのとき、その他」という構成なので、「その他」の判定はELSEだけ書いて条件式を省略できます。