Hvordan beregne en prosentvis endring (økning og reduksjon) fra 2 verdier I JavaScript

Villig til å løse en enkel prosentvis endring I JavaScript? Det første du må gjøre, er å tenke matematisk. Du må hente forskjellen (redusere eller øke) mellom tallene du sammenligner. Denne forskjellen må deles mellom det første nummeret (det som ikke endres). Resultatet av denne operasjonen må være mulitplied med 100. Å gjøre en abstraksjon av denne prosessen i En JavaScript-funksjon, ville vi ha:

/** * 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;}

Merk at hvis du endrer ordrene til det gamle og det nye nummeret, vil svaret være annerledes, så vær sikker på at det første argumentet er den første versjonen av verdien, det betyr den som ikke endret seg og som andre argument verdien som endret seg.

Eksempler

følgende eksempler viser ulike tilfeller av en prosentvis endring både positiv (reduksjon) som negativ (økning) i henhold til synspunktet:

Obs!

en negativ verdi angir en prosentvis økning.

// 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);

Hvor kan denne funksjonen brukes

hvis du for EKSEMPEL arbeider med bildekomprimeringsalgoritmer, vil du kanskje vise en lesbar verdi i prosent som angir hvor mye som ble komprimert fra det innledende bildet, hvor det gamle nummeret er den opprinnelige filstørrelsen, f.EKS. 1MB og det nye nummeret ER 500KB, noe som vil resultere i en reduksjon på 50%.

Glad koding !

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert.