PHP + MySQL 百万以上的不规则计算问题

PHP + MySQL Irregular Calculation issues above a million

当我尝试使用 PHP 功能对产品进货时,我遇到了一个非常难 运行ge 的问题。

函数如下:

function add_stock($products_id, $add_quantity) {
global $db;
$db->Execute("update " . TABLE_PRODUCTS . "
                  set products_quantity = products_quantity + " . (int)$add_quantity . ", products_ordered = products_ordered - " . (int)$add_quantity . " where products_id = '" . (int)$products_id . "'");
}

因此,在上面的函数中,我关注的区域是 products_quantity 添加到 $add_quantity 时。

一切正常,但当我测试数量为 1 000 000 或更多的产品时,它会进行 st运行ge 计算。

例如,测试产品的数量为 1 000 000。使用该函数添加 8 使其成为 1 000 010。所以它没有添加 8,而是添加了 10。我再次使用 6 运行 它,并且8,然后是 1 000 020,然后是 1 000 0030。就像 10 的增量一样。我很困惑。

我用其他十几种数量不到一百万的产品进行了测试,每次都完美无缺。

编辑:通过评论询问后 - products_quantity 的数据类型为 FLOAT。

FLOAT 精度低,需要四舍五入。那就是问题所在。

将列的数据类型更改为DECIMALNUMERICINTBIGINT