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 之间的区别只是浮点数不准确。
为什么以下查询结果为值 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 之间的区别只是浮点数不准确。