我在一个小网店工作,我想得到一个产品的最低价格(照片)。
所以我检查一下最低的附加价格是多少(照片可以按不同的尺寸订购):
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?
因为实数1256.3不能用浮点数精确表示。
对于货币数据,应该使用定点数据类型。引用MySQL文档:
DECIMAL
和NUMERIC
类型存储精确的数值数据值。这些类型用于重要的是保持精确的精度,例如货币数据。
这是FLOAT列类型的副作用,您可以尝试将价格存储在DECIMAL数据类型中,有关它的更多信息请参阅mysql手册:http://dev.mysql.com/doc/refman/5.1/en/fixed-point-types.html
1256.3
在浮点运算中没有精确表示;因此,通常最好将金额存储为INTEGER
或DECIMAL
数据类型。
更多信息请点击此处。