3

我有一个类似于下面的查询。我从 PDO/PHP 得到的结果与在服务器上的交互式 SQL 提示符中得到的结果不同。通过交互式 SQL 运行此查询时,我可以正确看到交易金额(即 45.34)。

当我通过 PDO 提取结果时,我看到错误增加了精度的错误结果(即 45.3400000000001)。PDO 中是​​否有可以设置为返回存储在数据库中的数据的东西?

Select tl.ID
       , tl.Transaction_Amount
from transactionLog tl

更新:从查询返回的数据正在格式化为 json。我已经验证了 pre-json 数据也包含错误数据。antoox 的一个答案建议在查询中的 db 级别进行四舍五入。不幸的是,这无济于事,因为查询在 SQL 提示符下运行时会返回正确的数据,并且一旦通过 PDO 就会不正确地显示舍入与否。antoox 也提到了 PHP 错误 #53632。不幸的是,这个错误不是我们环境中的一个因素,因为我们使用的是更新的版本。

更新: Sybase Central 报告的数据库字段为数字大小 10,比例为 2。

4

2 回答 2

0

几个版本的 PHP 有一个浮点错误

您可以执行以下查询:

SELECT tl.ID, round(tl.Transaction_Amount, 2) FROM transactionLog tl

,或更新您的 php 版本。

于 2013-05-15T14:49:46.347 回答
0

我们最终通过使用类似于如何在 JavaScript 中将数字格式化为货币的想法来“解决”这个问题?答案,虽然不理想,但性能足够好,在这个用例中是可以接受的。

于 2013-05-15T21:39:33.693 回答