我的表列有正负浮点数。当我查询得到所有数字的SUM()时,它返回错误的结果。
表:
+----+---------+--------+
| id | user_id | points |
+----+---------+--------+
| 1 | 38 | 30.5 |
| 2 | 38 | -5.3 |
+----+---------+--------+
查询:
SELECT SUM(points) FROM table WHERE user_id=38
结果:
25.199999809265137
为什么会这样?为什么我没有得到25.2
?
答案 0 :(得分:3)
正如Problems with Floating-Point Values所述:
浮点数有时会引起混淆,因为它们是近似值而不是存储为精确值。 SQL语句中写入的浮点值可能与内部表示的值不同。
答案 1 :(得分:1)
我猜你的积分字段是浮点数,这不是确切的。
"近似值"根据{{3}}。
使用小数或数字类型进行精确计算,小数点后面有已知数量的数字。
或者在1位数字上查询查询结果,因为您的来源也是小数点后面的1位数。但要知道,它不可能是圆润而精确的合作(更好:不是100%准确且可预测)