gpt4 book ai didi

MySQL FLOOR 函数意外结果

转载 作者:可可西里 更新时间:2023-11-01 07:24:48 27 4
gpt4 key购买 nike

CREATE TABLE table_name (col_a double(10,2), col_b double(10,2), col_c double(10,2));
INSERT INTO table_name VALUES(36.3, 0, 6.3);

enter image description here

查询

SELECT FLOOR(36.3- 0 -6.3), FLOOR(col_a - col_b - col_c) AS calc, col_a, col_b, col_c 
FROM table_name LIMIT 1;

结果

enter image description here


第一个选择的值 => FLOOR(36.3- 0 -6.3) 结果为 30

第二个选择值 => FLOOR(col_a - col_b - col_c) 等于 FLOOR(36.3- 0 -6.3) 导致 29 但我期待 30

为什么这些选择得到两个不同的值?

最佳答案

这是 MySQL 中使用 doublefloat 类型时的一个已知问题,它们在内部存储的方式与我们看到的完全不同。

如果您阅读 MySQL documentation ,您会发现一个建议的解决方法,即使用 decimal 而不是 double。您可以在以下 Fiddle 中看到,当使用 decimal(10,2) 作为您的列类型时,一切都按预期工作:

SQLFiddle

关于MySQL FLOOR 函数意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41436844/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com