SQL:对负实数和正实数求和给出了错误的值

SQL: Sum a negative and positive real gives wrong value

为什么以下查询结果为值 3.21865081787109E-06,而值应为零?

CREATE DATABASE TEST
GO
USE TEST
CREATE TABLE NUMS (NUMBER REAL)
GO
INSERT INTO NUMS VALUES (1.67460317460317),(-1.6746)
GO

然后运行:

SELECT SUM(NUMBER) FROM NUMS

这个returns值3.21865081787109E-06?

如果我将值转换为十进制,或者如果我将第一个数字缩短为 1.6746 它 returns 正确的零值?

另外: 手动对数字求和给出正确的值,看起来好像 SUM() 修剪了零?

select (1.67460317460317 + -1.6746)

Returns:

0.00000317460317

谢谢!

为什么应该是 0?

   1.67460317460317
+ -1.6746
-------------------
=  0.00000317460317
=  3.17e-06

你的 3.21 和 "real" 数学 3.17 之间的区别只是浮点数不准确。