In PHP, how do I ensure the sum of parts is 1? This post was last edited by Jasmine_xiaocao from 2013-05-1809: 51: 53 $ total & nbsp ;=& nbsp; $ a + $ B + $ c + $ d; $ in percent PHP, how do I ensure that the sum of each department is 1?
This post was last edited by Jasmine_xiaocao at 09:51:53
$total = $a+$b+$c+$d;
$percentA = ceil($a*100.0/$total);
$percentB = ceil($b*100.0/$total);
$percentC = ceil($c*100.0/$total);
$percentD = ceil($d*100.0/$total);
The above code does not seem to ensure that the final sum is 100%
$percentD = 100-$percentA-$percentB-$percentC;
Is there any other method besides this? Share:
------ Solution --------------------
$a = array(1,2,3,3);
$total = array_sum($a);
array_walk($a, function(&$item, $key, $prefix) { $item = round($item*100/$prefix); }, $total);
if($d = (100 - array_sum($a))) $a[rand(0, count($a)-1)] += $d;
print_r($a);