首页 > 解决方案 > 如何从数组中提取百分比

问题描述

如何从数组中提取百分比
结果如下: 41 - 16 - 8 - 33
合计是98,不是100
怎么弄= 100

$sum = array(500.36,200.32,100.09,400);
$total =  array_sum($sum);
foreach($sum as $val){
    $st = intval($val / $total * 100 );
    echo $st.'<br>';
}

标签: php

解决方案


原因是:精度 :) 使用 intval() 可以跳过小数点。所以 41+16+8+33 真的是 98。

如果用 2 位小数相加:41.66 + 16.68 + 8.33 + 33.31 = 99.98

如果您使用 round() 而不是 intval() 您将对值进行四舍五入,以便在统计上更接近。你会得到:42 + 17 + 8 + 33 = 100

但!如果你想确保总和是 100,那么你应该选择一个数字(我建议最大的一个)来计算:100 - 总和(其余的)。


推荐阅读