现在我将balance
字段存储在MySQL decimial(15, 2)
中。在PHP中,我使用bcmath库进行操作:
bccomp($currentBalance, 100.15, 2)
- 检查用户是否有足够的钱。
bcadd($currentBalance, 100)
- 用于增加用户余额。
等等。
这是正常的,但BCMath doc说:
将float类型的值传递给期望a的BCMath函数 由于PHP的方式,字符串作为操作数可能没有所需的效果 将浮点值转换为字符串,即字符串可能在 指数表示法(BCMath不支持的内容),以及 小数分隔符是locale dependend(而BCMath总是期望a 小数点)。
所以我想避免意外。处理钱的正确方法是什么?
答案 0 :(得分:5)
作为整数。将100.15转换为10015并跟踪货币,以便了解显示时应用的小数位数。
答案 1 :(得分:0)
关注http://php.net/manual/en/function.bcadd.php和http://php.net/manual/en/function.bccomp.php
我认为你应该将params作为字符串传递。在你的情况下,也许是bccomp(“$ currentBalance”,“100.15”,2) - >尚未测试。