我正在一家小型网上商店工作,并且试图以最低的价格购买某种产品(照片)。

因此,我检查了最低的附加价格是多少(可以订购不同尺寸的照片):

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

这将返回为此产品找到的最低值。

当我检查数据库时,我看到最小值是1256.3。
当我打印结果时,给出的数字是1256.30004882813。
该值设置为FLOAT。

为什么结果是1256.30004882813,而不是1256.3?

最佳答案

因为real number 1256.3无法在floating point中精确表示。

您应该将fixed-point datatype用于货币数据。引用MySQL documentation:

关于mysql - SQL MIN()奇怪的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8475683/

10-10 14:30