PHP で通貨の値を扱うためのベストプラクティスは? 質問する

PHP で通貨の値を扱うためのベストプラクティスは? 質問する

PHP で通貨の値を加算、乗算、比較する必要があり、1 セント単位まで正確であることを確認する必要があります。

1 つの方法は、すべてを float に格納し、各操作の前後に round を使用し、等しいかどうかを比較するときにマシンの epsilon を考慮することです。個人的にはかなり面倒だと思います。

もう 1 つの方法は、全体を整数データ型のセントとして保存し、データベース (mysql、ここでは 10 進データ型を使用) を操作するときはいつでも、前後に変換することを忘れないようにすることです。これは洗練されておらず、多くのエラーの落とし穴があると思います。

もう 1 つの方法は、独自の「データ型」を発明し、すべての値を文字列 ("34.12") に格納し、独自の数学的置換関数を作成することです。これらの関数は、値を内部的に整数に変換し、計算を実行して、結果を再び文字列として出力します。驚くほど複雑だと思います。

質問です: PHP で通貨の値を扱うためのベストプラクティスは何ですか? よろしくお願いします!

ベストアンサー1

MySQL v5.0.3 以降、MySQL のDECIMALデータ型は正確な 10 進数、つまり不正確な浮動小数点表現を格納します。

PHPで精度数値を正しく操作するには、任意精度の数学関数このライブラリは内部的にテキスト文字列を操作します。

通貨は小数として保存されることを意図しており、セントより小さい金額単位を取得できます。数値を丸めるのは、操作中や保存中ではなく、数字を表示するときだけです。

おすすめ記事