今私はdecimial(15, 2)
のようにbalance
フィールドをMySQLに保存します。そして、PHPで私は操作のためにbcmathライブラリを使用します:PHPとMySQLでお金の値を扱うには?
bccomp($currentBalance, 100.15, 2)
- 十分なお金があるかどうかをチェックします。 bcadd($currentBalance, 100)
- ユーザバランスを向上させます。
等
これは正しく動作しているが、BCMathドキュメントは言う:
は、オペランドとして 文字列が原因所望の効果を持っていない可能性があり期待しBCMath関数にfloat型の値を渡しますPHP はfloat値を文字列に変換します。すなわち、文字列は 指数表記(BCMathではサポートされていません)であり、小数点区切り文字はロケール依存です(BCMathは常に の小数点を必要とします)。
私は驚きを避けたいです。お金を扱う正しい方法は何ですか?
まだ浮動小数点を文字列に変換しています。 – PizzaLover