PHPで、四則演算をすることって多々あると思います。
その中で、小数点を含む計算をしたときに、コンピュータは賢いようで賢くないので、誤計算をしてしまいます。
例えば、
(0.1 + 0.7) * 10
答は、8なのですが、
コンピュータが出した答は7
。
おいおい、ってなるんですよね。
PHPだと、bcadd()関数を使って計算しないとダメなのです。
乗算の場合は、bcmul()関数。
ところが、いろいろとやっているうちに、同じ計算をしているのに現象が起きるページと起きないページがあるんです。
なぜか?
違いを見比べて見たところ、
現象が起きているページ→計算結果を直接出力している。
現象が起きていないページ→計算結果を変数に格納してから、出力している。
PHPのバージョンかもしれませんが、私の環境下ではこのような結果になりました。
結論:
計算結果は、一度変数に格納してから、出力するといい。
もしかすると、特定の環境下という条件かもしれません。
詳しい情報お持ちの方は、ご教授下さい。
【WEB開発】コメントする