PDO FetchAll()四舍五入问题



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

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

似乎有四舍五入的问题…我不明白为什么它试图四舍五入的数字,当然它应该只是采取从数据库的值,因为它出现?

I have try:

  1. 在DB上运行存储过程,这绝对工作得很好,因此它肯定与PDO有关。
  2. 运行一个正常的查询(而不是存储过程),这仍然产生相同的结果。

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

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

乌利希期刊指南:您还可以使用PDOStatement::bindColumn将结果列指定为string (PDO::PARAM_STR),但我没有检查它。

最新更新