2011-12-12 111 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