Sql server SQL和奇怪的行为

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 (

有人可以向我解释为什么我要在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 
  (
      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(无浮动);