我有一个包含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时,有人可以建议我为什么会得到这个号码吗?
感谢您的帮助
罗布
答案 0 :(得分:0)
我将Tab Allenman建议的数据类型更改为Decimal,这解决了我的问题。我仍然不明白为什么我在使用float时没有得到零,因为所有的值都精确地加到了245(我甚至手动重新输入了值)而245 - 245应该给了我0.
再次感谢所有评论和解释。
罗布