0

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

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

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

我努力了:

  1. 在数据库上运行存储过程,这绝对可以正常工作,因此它肯定与 PDO 有关。
  2. 运行普通查询(而不是存储过程),这仍然会产生相同的结果。

显然我可以自己格式化数字,但这无关紧要,因为我必须确保我从数据库中得到的正是数据库中的!

4

1 回答 1

1

也许问题是浮点数如何在 PHP 内部存储?尝试在官方文档中阅读它。

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

于 2013-06-06T11:14:36.920 回答