我正在使用PDO在MSSQL数据库上执行存储过程。除PDOStatement::fetchAll()
的一个小故障外,一切都非常出色。从存储过程返回浮点数时,不是使用正确的值和小数位返回它们,而是返回带有额外小数位的值,如下所示:
Database | Returned by PDO
-----------------------------------
614.9 | 614.89999999999998
1.18 | 1.1799999999999999
似乎存在舍入问题......我不明白为什么它试图对数字进行舍入,当然它应该只是从数据库中取出它的值?
我试过了:
显然我可以自己格式化数字,但这是无关紧要的,因为我必须确保从数据库获得的内容正是数据库中的内容!
答案 0 :(得分:1)
问题可能是浮点数如何在PHP内部存储?试着阅读in official docs。
<强> UPD:强> 您也可以使用PDOStatement::bindColumn将结果列指定为字符串(PDO :: PARAM_STR),但我没有检查它。