告诉我两个零是否有意义:
select x, count(1) from (select round(rand()-0.5,1) x from tab) t group by x;
+------+----------+
| x | count(1) |
+------+----------+
| -0.5 | 1830 |
| -0.4 | 3726 |
| -0.3 | 3753 |
| -0.2 | 3835 |
| -0.1 | 3828 |
| 0.0 | 1909 |
| -0.0 | 1889 |
| 0.1 | 3831 |
| 0.2 | 3753 |
| 0.3 | 3793 |
| 0.4 | 3690 |
| 0.5 | 1887 |
+------+----------+
有一个解决方法(强制转换为十进制(10,1))但我很好奇圆()被破坏了。我正在使用MySQL 5.1
答案 0 :(得分:5)
IEEE浮点标准有两个零:正数和负数。圆形()在将负值舍入为0时返回负零是完全正常的。
通常,负零被视为等于零,但看起来在您的平台上,MySQL认为它们是不同的。
更新: MySQL,至少在5.5中,似乎认为=
的正负0等于GROUP BY
。
您可以向值添加零以将负零转换为正值而不更改其他值。例如,
select x, count(1) from (select 0+round(rand()-0.5,1) x from tab) t group by x;