我有一个列只有一个列'id'。表的create语句是:

CREATE TABLE `test` (
  `id` float default NULL
);

表中的值为:
id
-----
8.075

当我执行查询时:
SELECT ROUND(id, 2) FROM test;

我得到的结果是8.07。
但当我简单地执行查询时:
SELECT ROUND(8.075,2);

我得到的值是'8.08'。
在这两种情况下,如何才能得到一致的结果?
可以查看这些查询的演示here

最佳答案

圆的结果取决于文本8.075的隐式类型。
浮点数8.075在内部表示为最接近的浮点数,即8.07499999999999928946,它可以四舍五入为8.07
如果文本8.075被解释为十进制,则可能会应用“舍入半偶数”规则。我会查一下,但MySQL的网站现在已经关闭了。

09-25 19:40