Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá Amigos,
Estou Com Probleminha...
Se eu por:
$positive = 1;
$neutral = 0;
negative = 0;
RESULTADO: ocorre tudo ok fica 100% e os de mais 0%.
Mais se eu por:
$positive = 10;
$neutral = 5;
negative = 2;
RESULTADO: Fica 2% perdido entre os valores (calculo) e não consigo corrigir.
**CODIGO PHP:**
<?php
$positive = count($conn->query("SELECT * FROM reviews WHERE type = '2'")->fetchAll());
$neutral = count($conn->query("SELECT * FROM reviews WHERE type = '1'")->fetchAll());
$negative = count($conn->query("SELECT * FROM reviews WHERE type = '0'")->fetchAll());
$total = count($conn->query("SELECT * FROM reviews")->fetchAll());
$porc = 100;
if($positive > 0){
$porc_positive = (($positive*$porc)/$total);
if(strlen($porc_positive) > 2){
$array = str_split($porc_positive);
$porc_positive = $array['0'].$array['1'].$array['2'];
$porc_positive = str_replace(",", "", $porc_positive);
}else{
$porc_positive = $porc_positive;
}
}else{
$porc_positive = 0;
}
if($neutral > 0){
$porc_neutral = (($neutral*$porc)/$total);
if(strlen($porc_neutral) > 2){
$array = str_split($porc_neutral);
$porc_neutral = $array['0'].$array['1'].$array['2'];
$porc_neutral = str_replace(",", "", $porc_neutral);
}else{
$porc_neutral = $porc_neutral;
}
}else{
$porc_neutral = 0;
}
if($negative > 0){
$porc_negative = (($negative*$porc)/$total);
if(strlen($porc_negative) > 2){
$array = str_split($porc_negative);
$porc_negative = $array['0'].$array['1'].$array['2'];
$porc_negative = str_replace(",", "", $porc_negative);
}else{
$porc_negative = $porc_negative;
}
}else{
$porc_negative = 0;
}
?>AAAh sim... eu mudei o CODE........ aora usei ceil()
DE:
<?php
...
if(strlen($porc_positive) > 2){
$array = str_split($porc_positive);
$porc_positive = $array['0'].$array['1'].$array['2'];
$porc_positive = str_replace(",", "", $porc_positive);
...
**PARA:**
<?php
...
$porc_positive = ceil($positive * $porc / $total);
if($porc_positive > 100){
$porc_positive = 100;
}
...
tou querendo dividir cada valor/opção sua % por quantidade;
**estou usando PROGRESS BAR.**
/monthly_2018_03/image.png.182de0bb9218ea354cffbef2808c36f4.png" style="width:300px;height:200px;" />
-------------------------------------------------------------------------
se eu seguir como falei la no post 10,5,2 em unidades;
na soma da 101% ao soma todas porcentagem ( ou seja Positiva da x% + neutra x% + negativas x% = 101)ceil vai arredontar sempre para cima. Agora você deve seguir o que eu falei lá em cima:
>
Em 16/03/2018 at 17:24, Gabriel Heming disse:
Você deve arredondar por aproximação e, então, acrescentar ou remover quando o valor ficar diferente de 100%. Percentuais devem sempre ser considerados aproximados, nunca absolutos.
Se você arredondar para baixo, faltará sempre dois 2%. Veja só:
{>
Citar
Positivo: 58.823529411765
Neutro: 29.411764705882
Negativo: 11.764705882353
Arredonde para baixo:
>
Citar
Positivo: 58
Neutro: 29
Negativo: 11
Total: 98
1
Você deve arredondar por aproximação e, então, acrescentar ou remover quando o valor ficar diferente de 100%. Percentuais devem sempre ser considerados aproximados, nunca absolutos.