Tengo una pregunta sobre la lógica de javascript que uso para obtener el porcentaje de dos entradas de mis campos de texto. Aquí está mi código:
var pPos = $('#pointspossible').val(); var pEarned = $('#pointsgiven').val(); var perc = ((pEarned/pPos) * 100).toFixed(3); $('#pointsperc').val(perc);Por alguna razón, si mis entradas son 600 y 200, se supone que mi resultado es 33.333 pero obtengo 3.333. Si codifico mis valores, esto funciona bien. Si alguien puede ayudar, se lo agradezco. Gracias por adelantado.
Puedes usar esto
function percentage(partialValue, totalValue) { return (100 * partialValue) / totalValue; }Ejemplo para calcular el porcentaje de avance de un curso en base a sus actividades.
const totalActivities = 10; const doneActivities = 2; percentage(doneActivities, totalActivities) // Will return 20 that is 20%Parece funcionar:
html:
<input type='text' id="pointspossible"/> <input type='text' id="pointsgiven" /> <input type='text' id="pointsperc" disabled/>JavaScript:
$(function(){ $('#pointspossible').on('input', function() { calculate(); }); $('#pointsgiven').on('input', function() { calculate(); }); function calculate(){ var pPos = parseInt($('#pointspossible').val()); var pEarned = parseInt($('#pointsgiven').val()); var perc=""; if(isNaN(pPos) || isNaN(pEarned)){ perc=" "; }else{ perc = ((pEarned/pPos) * 100).toFixed(3); } $('#pointsperc').val(perc); } });Demostración: http://jsfiddle.net/vikashvverma/1khs8sj7/1/
Tratar:
const result = Math.round((data.expense / data.income) * 100)