php - MySQL 十进制字段在 PHP 中作为字符串返回

标签 php mysql string casting decimal

默认情况下,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/

相关文章:

php - 使用用户输入更新 MySQL 数据库的准备语句

PHP MySQL 将帖子链接到用户

c# - 使用 KeyValuePair 遍历 C# 字典

Javascript RegEx 从字符串中删除多个单词

c# - 如何检查字符串是否为空并在同一行中分配其值

php - 来自 mysql/php Json 编码数据和 Jquery 的 LazyLoad 内容

php - cURL 失败并出现错误 : Couldn't understand the server certificate format

php - 增加数据库中的行数

php - 如何使用 PHP 生成 Google ReCaptcha V2 安全 token ?

php - 使用 PHP 将空格转换为破折号和小写