代码之家  ›  专栏  ›  技术社区  ›  Svish

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

  •  10
  • Svish  · 技术社区  · 14 年前

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

    获取这些值时,在PHP中使用这些数字进行计算等操作是否安全?或者我会以潜在的舍入错误和在处理浮点数据类型时常见的错误结束吗?

    PHP如何在封面后面处理这些事情?用PHP进行货币计算安全吗?

    2 回复  |  直到 14 年前
        1
  •  9
  •   Peter Ajtai    14 年前

    可以使用执行任意精度数学的PHP库,例如 BC Math GMP .

    当你使用美分,或是最小的货币单位时,如果你遇到一种情况,你必须处理美分的零头,会怎么样?例如,如果你要处理股票的买卖,你必须比仅仅是美分更精确。在这种情况下,必须使用任意精度的数学。

        2
  •  10
  •   alex    14 年前

    大多数人用最小面值的php来衡量货币——例如,10澳元显示为1000美分。

    那是微不足道的 / 100 为了得到美元,你就得不到。 4.9999999 由浮点运算引起的值。

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

    似乎 已经知道了,但对于其他人, this is still required reading :)