Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/253.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP负片不断增加_Php_Math_If Statement - Fatal编程技术网

PHP负片不断增加

PHP负片不断增加,php,math,if-statement,Php,Math,If Statement,我这里有这个代码 $remaining = 0; foreach($clientArrayInvoice as $key=>$row){ $remaining = $remaining + $row['total']; } 它的作用是,它取total的值并将它们相加…但是当我有负值时,它也会将它们相加,例如当我有-51.75和-17.85时,我得到-69.60它应该是-33.90如何解决这个问题 `-33.901是我期望的值,因为当它是两个负数时,我想减,而

我这里有这个代码

$remaining = 0;
foreach($clientArrayInvoice as $key=>$row){
            $remaining = $remaining + $row['total'];   
}
它的作用是,它取total的值并将它们相加…但是当我有负值时,它也会将它们相加,例如当我有
-51.75
-17.85
时,我得到
-69.60
它应该是
-33.90
如何解决这个问题

`-33.901是我期望的值,因为当它是两个负数时,我想减,而不是加

谢谢, J

再次-->如果要添加内容并忽略符号,请参见php。

这可能会有帮助:

(-51.75) + (-17.85) = -69.60
(-51.75) - (-17.85) = -33.90
假设您始终需要添加第二个数字,而不考虑其符号,则需要使用with
$row['total']
获取绝对值:

$remaining = 0;
foreach($clientArrayInvoice as $key=>$row){
    $remaining = $remaining + abs($row['total']);   
}

针对您在问题中更新的内容:

-33.90是我期望的值,因为当它有两个负数时,我想减,而不是加

这正是使用
abs
功能所做的。我可以将上述代码段重写为:

$remaining = 0;
foreach($clientArrayInvoice as $key=>$row) {
    if ($remaining >= 0) {
        $remaining = $remaining + abs($row['total']);   
    }
    else {
        $remaining = $remaining - abs($row['total']);   
    }
}

但是,这与简单地使用PHP
abs
函数做的事情完全相同,因为您总是将
$row['total']
的大小添加到
$resisting

我不确定您的问题到底是什么,但是,如果
$remaining
为负值,则会继续添加绝对值,直到再次为正值

$remaining=$remaining+($remaining<0&&$row['remainingbalance'] <0-1:1)*$row['remainingbalance']


这适用于您的示例,它将是
0-51.75+17.85=-33.9
。但我不确定这是否是你在更大范围内想要的行为。

你的数学是错误的。PHP是正确的-51.75加-17.85等于-69.60。你确定吗?这听起来像是正确的行为。两个负值相加会产生一个更低的数字。-51.75+-17.85是-69.60-你为什么期望-33.90?如果你有51.75+17.85,你期待什么?或51.75+-17.85?还请注意,浮点运算并不精确。如果这是你正在处理的钱,你应该完全避免浮动。好的,我理解PHP是正确的,但是当它是负数时,我想减而不是加