php - mysql 中的舍入不能按预期工作

标签 php mysql casting double rounding

我不明白为什么我的结果不同:

我有表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/

相关文章:

php - 如何使用 phpunit_selenium2 扩展执行双击?

php - 如何创建带预览的图像 uploader

Java 有经验的程序员的书 (PHP)

python - tkinter Treeview 将 mysql 数据放入一列

c# - 将未知对象转换为接口(interface)的泛型接口(interface)(从最初明确的泛型类型到泛型集合类型的类型)

c++类型转换以获得访问权限

php - 将 UL 转换为样式化的 SELECT

sql - 如何从 MySQL 中的 bool 类型返回不同的字符串?

php - CakePHP 3 错误 : SQLSTATE[42000]: Syntax error or access violation: 1064

C# Dynamics : Convert. ChangeType 与 Cast