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 精度低,需要四舍五入。那就是问题所在。
将列的数据类型更改为DECIMAL
、NUMERIC
、INT
或BIGINT
。
当我尝试使用 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 精度低,需要四舍五入。那就是问题所在。
将列的数据类型更改为DECIMAL
、NUMERIC
、INT
或BIGINT
。