默认情况下,mysqli 将所有值作为字符串返回,MYSQLI_OPT_INT_AND_FLOAT_NATIVE
选项允许您将整数和 float 转换为适当的类型。尽管这不会影响十进制字段。
有没有一种方法可以自动将所有小数字段转换为 php 浮点类型,而无需手动调用 $value = (float) $row->some_decimal_field
?
最佳答案
我很怀疑。小数使用定点数学,PHP 中没有数据类型可以提供这一点。 float 接近,但实际上它们是四舍五入的,这意味着将 2 分配给 float 可能会导致 1.99999999999999999。因此,即使 MySQL 提供了一种将小数转换为 PHP float 的方法,将小数转换为 float 也会导致数据丢失。
要干净利落地处理这个问题,您需要像 GMP 这样的东西,但正如您可能猜到的那样,MySQL 无法自动为您提供它。您将需要在 PHP 中手动执行此操作。
关于php - MySQL 十进制字段在 PHP 中作为字符串返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18362598/