当前位置: 代码迷 >> Sql Server >> SQL2008 R2 数值求和为0处置
  详细解决方案

SQL2008 R2 数值求和为0处置

热度:831   发布时间:2016-04-24 08:49:55.0
SQL2008 R2 数值求和为0处理
SQL2008 R2 数据库 CKYE 表中有  CKID、CPID、KJQJ 、QCSL、RKSL、CKSL、QMYE 等主要字段,还有一些其他辅助字段。 CKID、CPID、KJQJ 字段类型是 nvarchar,QCSL、RKSL、CKSL、QMYE  字段类型是 u001    default 0 not null。QMSL 字段有6条数据 
-0.4
-4.9107
-0.4
0.4
4.9107
0.4   求和后为  -3.33066907387547E-16, 单独两条记录求和就为0, 这是什么原因呢,怎么处理一下求和以后直接为0。
------解决思路----------------------
select convert(decimal(18,0),sum(QMSL)) as SQMSL from CKYE 
------解决思路----------------------
数据类型导致的。
有些数据类型存的内容是不准确的,多项累加的情况下会出现误差,如果数据量大了,可能会更明显。
------解决思路----------------------
將你要求和的数据字段类型改为  decimal 类型。

float 类型,保存的是一个近似值。
比如你保存了 0.53,  但是在数据库里面, 保存的并不一定就是 0.53, 有可能是 0.530000000000001 这类值。
当小数到达一定位数后,就会采用科学计数法表示。就成了 -3.33066907387547E-16 这样类似的一串东东。