Ir para conteúdo
Fórum Script Brasil
  • 0

Garantir distribuição correta pela %


_LP_

Pergunta

Fala galera, é uma duvida de logica e de javascript.
Para fazer distribuição em % é facil, basta seguir a regra de 3.

Porém com arredondamento etc fica com valores errado o final. Então gostaria de saber como garantir que seja dado o valor total correto.
Fiz no w3school um exemplo basico, quando acessar basta apagar um numero e colocar dnv que irá calcular:
https://www.w3schools.com/code/tryit.asp?filename=FX4YQ74L6C5J

Lá tem um exemplo do valor total de contribuição foi 41660 e temos 500 reais.
Então dividiria o dinheiro referente ao valor que a pessoa contribuiu.

primeira pessoa -> 14765 então 
14765*500/41660
ou
14765/41660*500
Essas são as formas do calculo basico, resultado:177

Porém se seguir colocando os valores igual fiz no exemplo: o total distribuído fica 496, ou seja, faltou 4

Como posso garantir que sempre irá distribuir o valor total (no caso seria os 500) ??

 

Codigo que está no w3school

<!DOCTYPE html>
<html>
<body>
<form id="slick-login" onsubmit="return false" oninput="myFunction()">
Total Geral <input id="total" type="number" step="any" value="41660">
<br>
Total conseguido <input id="tCon" type="number" step="any" value="500"> 
<br>

1: <input id="g1" type="number" step="any" value="14765" > => <output id="gb1"></output><br>
2: <input id="g2" type="number" step="any" value="5555" > => <output id="gb2"></output><br>
3: <input id="g3" type="number" step="any" value="5380" > => <output id="gb3"></output><br>
4: <input id="g4" type="number" step="any" value="4965" > => <output id="gb4"></output><br>
5: <input id="g5" type="number" step="any" value="3900" > => <output id="gb5"></output><br>
6: <input id="g6" type="number" step="any" value="3890" > => <output id="gb6"></output><br>
7: <input id="g7" type="number" step="any" value="3205" > => <output id="gb7"></output><br>


</form>

<script>
function myFunction() {
    var gb1 = parseInt((parseInt(document.getElementById('g1').value)/parseInt(document.getElementById('total').value))*parseInt(document.getElementById('tCon').value));
 if (gb1 > 0) {
 	document.getElementById('gb1').innerHTML = gb1;
  }
  var gb2 = parseInt((parseInt(document.getElementById('g2').value)/parseInt(document.getElementById('total').value))*parseInt(document.getElementById('tCon').value));
 if (gb2 > 0) {
 	document.getElementById('gb2').innerHTML = gb2;
  }
  var gb3 = parseInt((parseInt(document.getElementById('g3').value)/parseInt(document.getElementById('total').value))*parseInt(document.getElementById('tCon').value));
 if (gb3 > 0) {
 	document.getElementById('gb3').innerHTML = gb3;
  }
  var gb4 = parseInt((parseInt(document.getElementById('g4').value)/parseInt(document.getElementById('total').value))*parseInt(document.getElementById('tCon').value));
 if (gb4 > 0) {
 	document.getElementById('gb4').innerHTML = gb4;
  }
  var gb5 = parseInt((parseInt(document.getElementById('g5').value)/parseInt(document.getElementById('total').value))*parseInt(document.getElementById('tCon').value));
 if (gb5 > 0) {
 	document.getElementById('gb5').innerHTML = gb5;
  }
  var gb6 = parseInt((parseInt(document.getElementById('g6').value)/parseInt(document.getElementById('total').value))*parseInt(document.getElementById('tCon').value));
 if (gb6 > 0) {
 	document.getElementById('gb6').innerHTML = gb6;
  }
    var gb7 = parseInt((parseInt(document.getElementById('g7').value)/parseInt(document.getElementById('total').value))*parseInt(document.getElementById('tCon').value));
 if (gb7 > 0) {
 	document.getElementById('gb7').innerHTML = gb7;
  }
}
</script>

</body>
</html>

 

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...