Sql server SQL和奇怪的行为
有人可以向我解释为什么我要在SQL management studio中求和Sql server SQL和奇怪的行为,sql-server,Sql Server,有人可以向我解释为什么我要在SQL management studio中求和 | field | --------- -41,07 -141,96 13,6 6 -13,6 -6 5,39 1,44 -6,83 41,07 141,96 使用简单的查询 SELECT sum( field ) s FROM [table] 我得到这个结果 |s| --- -2,8421709430404E-14 我无法复制 WITH CTE AS (
| field |
---------
-41,07
-141,96
13,6
6
-13,6
-6
5,39
1,44
-6,83
41,07
141,96
使用简单的查询
SELECT
sum(
field
) s
FROM [table]
我得到这个结果
|s|
---
-2,8421709430404E-14
我无法复制
WITH CTE AS
(
SELECT -41.07 AS S UNION ALL
SELECT -141.96 UNION ALL
SELECT 13.6 UNION ALL
SELECT 6 UNION ALL
SELECT -13.6 UNION ALL
SELECT -6 UNION ALL
SELECT 5.39 UNION ALL
SELECT 1.44 UNION ALL
SELECT -6.83 UNION ALL
SELECT 41.07 UNION ALL
SELECT 141.96
)
SELECT SUM(C.S)
FROM CTE AS C
这是因为您选择了数据类型。您已将
字段
定义为浮点
,因此您已声明对浮点值感到满意;这些都不是准确的数字。当您聚合许多浮点值时,您将得到一个科学的符号值,并且很可能会丢失准确性。如果您对此不满意,请不要使用float
如您所见,下面给出了值为精确数据类型(numeric
)而不是使用浮点数据类型时的0
选择SUM(NotAFloat)作为SummedNotAFloat,
SUM(将(float,NotAFloat)转换为SummedFloat
从(值(-41.07),
(-141.96),
(13.6),
(6),
(-13.6),
(-6),
(5.39),
(1.44),
(-6.83),
(41.07),
(141.96)V(无浮动);