2014-05-14 264 views
0

我有表列有正數和負數的浮點數。當我查詢獲取所有數字的SUM()時,它返回錯誤的結果。錯誤的sql SUM()正數爲負數

表:

+----+---------+--------+ 
| id | user_id | points | 
+----+---------+--------+ 
| 1 |  38 | 30.5 | 
| 2 |  38 | -5.3 | 
+----+---------+--------+ 

查詢:

SELECT SUM(points) FROM table WHERE user_id=38 

結果:

25.199999809265137 

這究竟是爲什麼?爲什麼我沒有得到25.2

+0

是否有任何值後一個點的位置? –

+0

@AlmaDo:以何種可以想象的方式,形狀或形式是否會重複比較運算符的問題? – eggyal

+0

你可以發表表格定義嗎?如果'points'創建爲'DECIMAL(10,2)',那麼一切都按預期工作。 – vhu

回答

3

作爲Problems with Floating-Point Values下記載:

浮點數有時會引起混淆,因爲它們是近似的,而不是存儲爲精確值。寫入SQL語句中的浮點值可能與內部表示的值不同。

1

我猜你的分數字段是一個浮點數,這是不準確的。

「近似值」根據the mysql dcoumentation

使用小數或數字類型可以精確計算小數點後面已知數量的數字。

或者將您的查詢結果放在1位數上,因爲您的來源也是小數點後面的1位。但知道它是圓的,確切的comaprison是不可能的(更好:不是100%準確和可預測的)