当我用php求和时,我遇到了一个奇怪的问题。
我有以下代码(使用laravel集合):
$stockQuantity = 0;
if ($ledgerEntries->count()) {
$ledgerEntries->each(function ($item) use (&$stockQuantity) {
$stockQuantity += $item->Quantity;
info($item->Quantity);
info($stockQuantity);
});
}
因此LedgerEntries是对象的集合。每个对象都有一个数量。 我的目标是使对象中所有“数量”值的总和。
所以我循环了这些项目,在每个循环中传递总计,然后将数量添加到总计中,并且为了进行装卸,我记录了数量和总计。
以下是日志(我仅添加了最后8个条目):
[2018-09-07 09:10:17] local.INFO: 510
[2018-09-07 09:10:17] local.INFO: -1683
[2018-09-07 09:10:17] local.INFO: 561
[2018-09-07 09:10:17] local.INFO: -1122
[2018-09-07 09:10:17] local.INFO: 561
[2018-09-07 09:10:17] local.INFO: -561
[2018-09-07 09:10:17] local.INFO: 561
[2018-09-07 09:10:17] local.INFO: -9.0949470177293E-13
因此,在倒数第二个循环中,我的$ stockQuantity为-561。在上一个循环中,我将561加上0,而不是0,结果是-9.0949470177293E-13。
我无法解决这个问题。有没有人可以对此有所了解?
Ps:通过测试,我还尝试了以下方法:
info(-561 + 561);
这将返回:
[2018-09-07 09:21:19] local.INFO: 0
我想念什么?