PHP + MySQL不规则计算问题超过一百万

问题描述 投票:0回答:1

当我尝试使用PHP函数补货产品时遇到一个非常奇怪的问题。

这里是功能:

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时。

一切正常,但是当我测试一种数量等于或大于1000000的产品时,它的计算就很奇怪。

例如,测试产品的数量为1 000000。使用该函数将8加到1 000010。因此,不是加8,而是加了10。我再次使用6和8运行它,然后变为1。 000 020,然后1 0000030。就像以10为增量。我很困惑。

[我尝试了其他十二种产品,其数量不足一百万,并且每次都能完美地工作。

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

php mysql calc
1个回答
0
投票

FLOAT的精度较低,并且可能会四舍五入。那就是问题所在。

将列的数据类型更改为DECIMALNUMERICINTBIGINT

© www.soinside.com 2019 - 2024. All rights reserved.