2011-12-12 103 views
7

我正在一家小型網上商店工作,我正試圖獲得產品(照片)的最低價格。SQL MIN()奇怪的值

所以我檢查,看看最低加入價格是(照片可以以不同的尺寸訂購):

SELECT 
    MIN(price) as price 
FROM 
    rm_prices 
WHERE 
    photo_id = '47' AND 
    price != '0' 

這將返回找到該產品的最低值。

當我檢查我的db時,我看到最低值是1256.3。
當我打印結果時,編號爲1256.30004882813。
該值設置爲FLOAT。

爲什麼結果1256.30004882813而不是1256.3?

+0

看看這個,瞭解FLOATing point算法真正起作用是非常重要的,因爲如果你只是假設它總是'非常準確'的話,它會讓你失望...... http://citeseerx.ist.psu.edu/ viewdoc/summary?doi = 10.1.1.22.6768 – MatBailie

回答

1

1256.3在浮點運算中沒有確切的表示形式;因此,通常更好的做法是將數據存儲爲INTEGERDECIMAL數據類型。

更多的信息可能被發現here