[SQL ] 相減為什麼會跑掉?

看板Database作者 (Minds)時間17年前 (2008/10/18 17:10), 編輯推噓6(602)
留言8則, 6人參與, 最新討論串1/1
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

10/18 20:33, , 1F
group by?
10/18 20:33, 1F

10/18 21:13, , 2F
現在沒得實驗,感覺是float不準,轉成decimal再sum試試看
10/18 21:13, 2F

10/18 22:38, , 3F
這種欄位怎麼會用float?
10/18 22:38, 3F

10/18 23:39, , 4F
FLOAT常常會發生這種問題喔 你去資料庫看其實數字是正確的 但
10/18 23:39, 4F

10/18 23:40, , 5F
加減乘除之後有時會這樣 忘記是改成decimal或double才會正確
10/18 23:40, 5F

10/19 22:56, , 6F
這答案從估計值的角度來看是對的 E-04 是10^-4 :p
10/19 22:56, 6F

10/20 13:42, , 7F
為什麼會用float...我想這個問題連原開發者也忘了…Orz
10/20 13:42, 7F

10/20 15:12, , 8F
把欄位改成Decimal後就解決了 謝謝大家
10/20 15:12, 8F
文章代碼(AID): #18-QVuoV (Database)