在PHP中使用钱(十进制数)是否安全?

时间:2010-09-26 22:51:00

标签: php decimal currency

我的MySQL数据库中有一个items表,其DECIMAL(10,2)字段名为price

获取这些值时,使用PHP中的这些数字进行计算是否安全?或者我最终会遇到潜在的舍入错误以及使用浮点数据类型时常见的问题吗?

PHP如何处理封面背后的这些事情?使用PHP进行货币计算是否安全?

2 个答案:

答案 0 :(得分:10)

大多数人用PHP中最小面额衡量货币 - 例如,10澳元将显示为1000美分。

/ 100获得美元是微不足道的,你不会得到例如浮点运算引起的4.9999999值。

或者,您可以使用浮点和舍入到最接近的最小分值(例如,可以是5的倍数)。

似乎已经了解它,但对于其他人来说,this is still required reading:)

答案 1 :(得分:9)

您可以使用执行任意精确数学运算的PHP库,例如 BC Math GMP

虽然有时使用美分或最小的货币单位,但如果遇到必须处理分数的情况怎么办?例如,如果您正在处理卖出和买入股票,您必须具有更高的精确度而不仅仅是美分。在这种情况下,你必须使用任意精度数学。