【发布时间】:2013-06-06 11:09:47
【问题描述】:
我正在使用 PDO 在 MSSQL 数据库上执行存储过程。除了PDOStatement::fetchAll() 的一个小故障之外,一切都非常出色。从存储过程返回浮点数时,不是返回正确的值和小数位,而是返回带有额外小数位的值,如下所示:
Database | Returned by PDO
-----------------------------------
614.9 | 614.89999999999998
1.18 | 1.1799999999999999
似乎存在四舍五入的问题...我不明白它为什么要对数字进行四舍五入,当然它应该只是从数据库中获取它出现的值?
我试过了:
- 在 DB 上运行存储过程,这绝对可以正常工作,因此它肯定与 PDO 有关。
- 运行普通查询(而不是存储过程),这仍然会产生相同的结果。
显然我可以自己格式化数字,但这无关紧要,因为我必须确保我从数据库中得到的正是数据库中的!
【问题讨论】:
-
你确定不是反过来吗?您在“数据库”中看到的内容是四舍五入的?
-
该列的数据类型是什么?
-
@OneTrickPony 说的很对!!我怎么知道?
-
@YogeshSuthar 浮点数 53
-
尝试插入
4.21和4.1999999并检查两种情况下的 PDO /“数据库”返回什么
标签: php sql-server pdo fetchall