PDO FetchAll()数字舍入问题

时间:2013-06-06 11:09:47

标签: php sql-server pdo fetchall

我正在使用PDO在MSSQL数据库上执行存储过程。除PDOStatement::fetchAll()的一个小故障外,一切都非常出色。从存储过程返回浮点数时,不是使用正确的值和小数位返回它们,而是返回带有额外小数位的值,如下所示:

Database | Returned by PDO
-----------------------------------
614.9    | 614.89999999999998
1.18     | 1.1799999999999999

似乎存在舍入问题......我不明白为什么它试图对数字进行舍入,当然它应该只是从数据库中取出它的值?

我试过了:

  1. 在数据库上运行存储过程,这非常正常,因此它绝对与PDO有关。
  2. 运行普通查询(而不是存储过程),这仍会产生相同的结果。
  3. 显然我可以自己格式化数字,但这是无关紧要的,因为我必须确保从数据库获得的内容正是数据库中的内容!

1 个答案:

答案 0 :(得分:1)

问题可能是浮点数如何在PHP内部存储?试着阅读in official docs

<强> UPD: 您也可以使用PDOStatement::bindColumn将结果列指定为字符串(PDO :: PARAM_STR),但我没有检查它。