PHP 已知 $a,$avg_price,$amount 的值,在php怎么算$b的值 $a = ($b - $avg_price) * $amount * ($b / $avg_price)

PHP 已知 $a,$avg_price,$amount 的值,在php怎么算$b的值 $a = ($b - $avg_price) * $amount * ($b / $avg_price)

按照公式,你肯定无法直接算出$b,
会得出一个公式:
过程比较繁杂,平方公式,开根计算后,直接写结果公式,待验算:

$b=sqrt((4*$a*$avg_price+$avg_price*$avg_price*$amount)/4*$amount)+$avg_price/2;


根据  $a = ($b - $avg_price) * $amount * ($b / $avg_price)
化简得到 $b*$b - $avg_price*$b -($a*$avg_price)/$amount = 0   就是一个一元二次方程求解,
这里就是一元二次方程都可化为,它的解是:

$b1 = ( $avg_price + sqrt( ($avg_price*$avg_price - (4*($a*$avg_price)/$amount) ) ) ) / 2;
$b2 = ( $avg_price - sqrt( ($avg_price*$avg_price - (4*($a*$avg_price)/$amount) ) ) ) / 2;

img

能算出来吗?$b / $avg_price(取得商) 这个如果整除还能行,如果不整除,那$b就多了

$a = ($b - $avg_price) * $amount * ($b / $avg_price)
肯定可以算,但你要把$a,$avg_price,$amount 的值发出来
用折半法代入都可以求出来,即$b=某个数,算算大于还是小于$a
直到等于$a

如果类型不同记得需要进行类型转换