我正在使用PDO在MSSQL数据库上执行存储过程 . 除了一个带有 PDOStatement::fetchAll()
的小故障外,一切都非常出色 . 从存储过程返回浮动时,而不是使用正确的值和小数位返回它们,它返回带有额外小数位的值,如下所示:
Database | Returned by PDO
-----------------------------------
614.9 | 614.89999999999998
1.18 | 1.1799999999999999
看起来似乎存在舍入问题......我不明白为什么它试图对数字进行舍入,当然它应该只是从数据库中取出值?
我试过了:
-
在数据库上运行存储过程并且这非常正常,因此它绝对与PDO有关 .
-
运行普通查询(而不是存储过程),这仍然会产生相同的结果 .
Obviously I can format the number myself, but this is irrelevant as I have to be sure that what I get from the database is exactly what is in the database!
1 回答
也许问题是如何在PHP内部存储浮点数?试着读一下in official docs .
UPD: 您也可以使用PDOStatement::bindColumn将结果列指定为字符串(PDO :: PARAM_STR),但我没有检查它 .