SQL中的减法给出不正确的值

时间:2015-12-11 17:16:42

标签: sql sql-server

我有一个包含Id,Date和浮点值的表格如下:

ID      startDt                  Days
1328    2015-04-01 00:00:00.000 15
2444    2015-04-03 00:00:00.000 5.7
1658    2015-05-08 00:00:00.000 6
1329    2015-05-12 00:00:00.000 28.5
1849    2015-06-23 00:00:00.000 28.5
1581    2015-06-30 00:00:00.000 25.5
3535    2015-07-03 00:00:00.000 3
3536    2015-08-13 00:00:00.000 13.5
2166    2015-09-22 00:00:00.000 28.5
3542    2015-11-05 00:00:00.000 13.5
3543    2015-12-18 00:00:00.000 6
2445    2015-12-25 00:00:00.000 5.7
4096    2015-12-31 00:00:00.000 7.5
2446    2016-01-01 00:00:00.000 5.7
4287    2016-02-11 00:00:00.000 13.5
4288    2016-02-18 00:00:00.000 13.5
4492    2016-03-02 00:00:00.000 19.7
2447    2016-03-25 00:00:00.000 5.7

我正在使用一个存储过程,它将Days加起来然后从存储在变量中的固定值中减去它。

表中的总数是245,变量设置为245,所以当减去两个时,我应该得到一个值0。但是,我得到的值为5.6843418860808E-14。我无法弄清楚为什么会这样,我已经离开并重新输入表中的每个数字,但我仍然得到相同的结果。

这是我用来计算结果的sql语句:

Declare @AL_Taken as float
Declare @AL_Remaining as float
Declare @EntitledLeave as float

Set @EntitledLeave=245

set @AL_Taken= (select sum(Days) from tblALMain)

Set @AL_Remaining=@EntitledLeave-@AL_Taken


Select @EntitledLeave, @AL_Taken, @AL_Remaining

select返回以下内容: 245,245,6.6843418860808E-14

当我应该获得0时,有人可以建议我为什么会得到这个号码吗?

感谢您的帮助

罗布

1 个答案:

答案 0 :(得分:0)

我将Tab Allenman建议的数据类型更改为Decimal,这解决了我的问题。我仍然不明白为什么我在使用float时没有得到零,因为所有的值都精确地加到了245(我甚至手动重新输入了值)而245 - 245应该给了我0.

再次感谢所有评论和解释。

罗布