2

我有一列只有一列'id'。表的创建语句为:

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'的价值。

怎样做才能在这两种情况下获得一致的结果?

这些查询的演示可以在这里查看。

4

1 回答 1

3

一轮的结果取决于字面量的隐式类型8.075

浮点数8.075在内部表示为最接近的浮点数,即8.07499999999999928946,四舍五入为 2 位8.07

如果文字8.075被解释为小数,则可能应用了“四舍五入”规则。我会查一下,但 MySQL 的网站现在已经关闭。

于 2012-06-16T06:23:47.453 回答