我不明白为什么我的结果不同:
我有表orders 和列price(在mysql 中输入double)。
数据库中的价格值为13.5。
查询:
SELECT ROUND(price * 0.09, 2) FROM orders where id = 1;
结果是:1.21
查询:
SELECT ROUND(13.5 * 0.09, 2);
结果是1.22
没有四舍五入:SELECT 13.5 * 0.09
结果是 1.215
所以回合后的正确结果是1.22。
为什么查询 SELECT ROUND(price * 0.09, 2) FROM orders where id = 1;
给我错误的结果 (1.21)?
我不明白哪里出了问题,我猜是因为转换。
有人能给我解释一下吗?
最佳答案
我不能评论,所以我给你写了一个答案。
阅读:http://dev.mysql.com/doc/refman/5.7/en/problems-with-float.html
Float 和 Double 数据,不存储精确的数字,所以可能会发现奇怪的问题。
像 AT-2016 告诉你的那样尝试 CEIL,希望你找到解决方案。
关于php - mysql 中的舍入不能按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39979402/