我有一系列值,例如
+10.00
-5.00
+0.75
-5.75
他们的总和必须为零,而我在屏幕上读取-3,5527136788005E-15
。
这是我的代码:
$currSum = 0;
foreach ($transactions as $key=>$value)
{
$currSum += (float)$value['amountFinal'];
echo '<p>sum is: '.$currSum.'</p>';
}
我确实试过了(float)
演员。
数据来自MySQL。
这是$transactions
数组(示例)
Array
(
[0] => Array
(
[idTransactions] => 42809
[amountFinal] => 1.95
[idAccount] => 143
[dateTransaction] => 2014-04-11 16:29:37
)
[1] => Array
(
[idTransactions] => 43455
[amountFinal] => 1.50
[idAccount] => 143
[dateTransaction] => 2014-04-17 16:06:53
)
)
编辑:我需要逐步计算总和,因为如果sum为零,我需要:
1 - 将[idTransactions]存储在另一个数组中 2 - 从MySQL中删除idTranscation。
(对于1和2没问题,但是如果$ curSum!= 0我无法实现我的目标)
答案 0 :(得分:1)
你正在处理PHP或mysql或它们之间的一些奇怪的舍入错误,我猜测。如果您相当确定n位数的精度就足够了,那么您可以简单地做这样的事情(使用n = 5):
$currSum += round($value['amountFinal'], 5);
或者,更好的是(为了表现以及确保它是结果正在被舍入),只需检查最终的显示/比较点:
foreach ($transactions as $key=>$value)
{
$currSum += (float)$value['amountFinal'];
echo '<p>sum is: '.round($currSum, 5).'</p>';
}
if (round($currSum, 5) == 0) {
# do whatever processing you wanted to do...
}