作者mindscold (Minds)
看板Database
标题[SQL ] 相减为什麽会跑掉?
时间Sat Oct 18 17:10:15 2008
DB:MSSQL2000
有一个VIEW如下:
select 出库数,入库数,入库数 - 出库数 as 结存 from 库存量
出库数 入库数 结存
===========
0 2 2
1.998 0 -1.998
其中出库数与入库数皆是float
请问为什麽这时候,当我下
select sum(结存) as 结存 from View
得到的答案却是1.99999999999978E-04
而不是2+(-1.998) = 0.002呢?
如果我sum(出库数),sum(入库数),sum(入库数)-sum(出库数)都能正确得到1.998,2,0.002
这3个数字
请各位大大解惑@@
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 60.248.17.41
1F:推 slalala:group by? 10/18 20:33
2F:推 grence:现在没得实验,感觉是float不准,转成decimal再sum试试看 10/18 21:13
3F:推 Adonisy:这种栏位怎麽会用float? 10/18 22:38
4F:推 abcf:FLOAT常常会发生这种问题喔 你去资料库看其实数字是正确的 但 10/18 23:39
5F:推 abcf:加减乘除之後有时会这样 忘记是改成decimal或double才会正确 10/18 23:40
6F:推 TonyQ:这答案从估计值的角度来看是对的 E-04 是10^-4 :p 10/19 22:56
7F:→ mindscold:为什麽会用float...我想这个问题连原开发者也忘了…Orz 10/20 13:42
8F:→ mindscold:把栏位改成Decimal後就解决了 谢谢大家 10/20 15:12