Como calcular uma mudança percentual (aumento e diminuição) de 2 valores em JavaScript

disposto a resolver uma mudança percentual simples em JavaScript? O primeiro que você precisa fazer é pensar matematicamente. Você precisa recuperar a diferença (diminuir ou aumentar) entre os números que você está comparando. Essa diferença precisa ser dividida entre o primeiro número (aquele que não muda). O resultado desta operação precisa ser mulitplied por 100. Fazendo uma abstração desse processo em uma função JavaScript, teríamos:

/** * Calculates in percent, the change between 2 numbers. * e.g from 1000 to 500 = 50% * * @param oldNumber The initial value * @param newNumber The value that changed */function getPercentageChange(oldNumber, newNumber){ var decreaseValue = oldNumber - newNumber; return (decreaseValue / oldNumber) * 100;}

observe que se você alterar as ordens do número antigo e novo, a resposta seria diferente, então certifique-se de que o primeiro argumento é a primeira versão do valor, isso significa aquele que não mudou e como segundo argumento o valor que mudou.

Exemplos

os exemplos A seguir mostram diferentes casos da percentagem de mudança, tanto positivo (diminuição) como negativos (aumento) de acordo com o ponto de vista:

Nota

Um valor negativo indica um aumento percentual.

// X = 500// Y = 234// % = 53.2getPercentageChange(500, 234);// X = 1000// Y = 890// % = 11getPercentageChange(1000, 890);// X = 5// Y = 2// % = 60getPercentageChange(5, 2);// X = 100// Y = 120// % = -20// Note: negative as it incremented 20%getPercentageChange(100, 120);// X = 500// Y = 500// % = 0// Note: no percent changegetPercentageChange(500, 500);

Onde pode essa função ser usado

Por exemplo, se você estiver trabalhando com algoritmos de compressão de imagens, você pode querer exibir um formato legível por humanos valor em percentual que indica o quanto foi compactada do intial imagem, onde o oldNumber é o tamanho do arquivo original e.g 1MB e o newNumber é 500KB, o que resultaria em uma redução de 50%.

codificação feliz !

Deixe uma resposta

O seu endereço de email não será publicado.