SQL MIN() strange value



我在一个小网店工作,我想得到一个产品的最低价格(照片)。

所以我检查一下最低的附加价格是多少(照片可以按不同的尺寸订购):

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文档:

DECIMALNUMERIC类型存储精确的数值数据值。这些类型用于重要的是保持精确的精度,例如货币数据。

这是FLOAT列类型的副作用,您可以尝试将价格存储在DECIMAL数据类型中,有关它的更多信息请参阅mysql手册:http://dev.mysql.com/doc/refman/5.1/en/fixed-point-types.html

1256.3在浮点运算中没有精确表示;因此,通常最好将金额存储为INTEGERDECIMAL数据类型。

更多信息请点击此处。

最新更新