gpt4 book ai didi

php - PHP 中的 MySQL DECIMAL 处理

转载 作者:可可西里 更新时间:2023-11-01 08:07:25 26 4
gpt4 key购买 nike

正如通常讨论的那样,(例如此处 Storing 0.00001 in MySQL)DECIMAL 数据类型应该用于需要精度/正确性的字段,例如帐户余额。

但是我想知道,PHP 如何处理这些值,如果它们在内部作为 float 处理,从数据库读取这些值、进行一些计算并再次将它们写回时是否仍然存在问题。如果是这样,我们如何才能强制 PHP 保持精确度?

最佳答案

该变量最初在 PHP 中可能是一个字符串(当从 MySQL 结果对象读取时)。通常,不能依赖 PHP 的 float 据类型来保持所需的精确十进制值。您应该使用任意精度的数学库,例如 GMP . (当您获取结果对象的一行时,将 DECIMAL 列值传递给适当的构造函数,然后使用您正在使用的库提供的函数对其进行操作。)

更深入:假设您在数据库中的 DECIMAL(6, 4) 列中存储了一个金额。你想把它提取到 PHP 中,用它做一些事情。您发出查询以获取该列。您将查询的第一行提取到关联数组中。假设该行的值为 2.5674。您的数组现在类似于 array('MyDecimal' => '2.5674')(数字显示为字符串)。您使用(据我所知)gmp_init() 将该字符串转换为 GMP 资源。现在您可以使用其他 GMP 函数对该数字进行数学计算。如果你想存储一个 GMP 编号,你可以使用 gmp_strval() 将它转换回字符串(如果你正在使用可以处理 GMP 资源的数据库抽象层,也许你不必这样做) .

关于php - PHP 中的 MySQL DECIMAL 处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8849484/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com