我的列只有一列'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。
答案 0 :(得分:3)
回合的结果取决于文字8.075
的隐式类型。
浮点数8.075
在内部表示为最接近的浮点数8.07499999999999928946
,它以8.07
的形式舍入到2个位置。
如果文字8.075
被解释为小数,则可能正在应用'round-half-even'规则。我会查一查,但MySQL的网站现在已经关闭了。