自省を兼ねてメモとして残す
旧システムでは基本料金を入力することで消費税が計算され、
総額入力が表示されるようになっていた。
例:基本金額 8727円 → 消費税 872.7 → 税込金額 9599.7円
税込金額表示の際に利用されていたのが、 number_formatであったため切り上げて処理
9599.7 → 9600
新システムでは税込金額を入力することで、
基本金額と消費税が自動で計算されるようになった。
税込金額 9600円 → 基本金額 8728 + 消費税 872
この際税込金額をDBに格納できていれば問題なかったのだが、
改修の都合上DBに入れられるのは基本金額のみ。
すると以下の問題が発生する。
例:基本金額 8728円 → 消費税 872.8 → 税込金額 9600.8円
税込金額を正しく(9600として)表示するためにfloorを利用して切り捨て処理
9600.8 → 9600
利用する関数をnumber_format→floorに変更することで9600と丸く収めた。
のだが、金額を扱っている物なので正しい表記は 9,600 でなければならない。
number_formatによる切り上げとfloorによる切り捨てに目が行き過ぎて、
金額整形してくれていることを忘れてしまったという失敗でした。
正しくは以下のように修正しなければならなかった。
失敗:number_format(hoge); → floor(hoge);
正解:number_format(hoge); → number_format(floor(hoge));
結論
金額を取り扱っている場合はただ数字だけに注目するのではなく、
表示(,による3桁区切りのフォーマット)にも注意しよう。