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 这样类似的一串东东。