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>