我有一个列只有一个列'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的网站现在已经关闭了。