当以两种不同的方式使用时,获得Mysql循环函数的不同结果

时间:2012-06-16 06:16:34

标签: mysql

我的列只有一列'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

1 个答案:

答案 0 :(得分:3)

回合的结果取决于文字8.075的隐式类型。

浮点数8.075在内部表示为最接近的浮点数8.07499999999999928946,它以8.07的形式舍入到2个位置。

如果文字8.075被解释为小数,则可能正在应用'round-half-even'规则。我会查一查,但MySQL的网站现在已经关闭了。