2017-10-08 14 views
0

Comportement souhaitéQuelle est la bonne façon de calculer le pourcentage d'augmentation/diminution entre deux nombres en utilisant Decimal.js?

Afficher le pourcentage d'augmentation/diminution de new_value par rapport à old_value, montrant indicateur négatif quand il y a eu une diminution, et 4 décimales (avec zéros si nécessaire).

comportement réel

Bonne
Si old_value est 38.1200 et new_value est 19.0600 résultat est -50.0000

Pas si bon
Si old_value est 0.0000 et new_value est 1.0000 résultat est Infinity (je m'attends à ce que le résultat soit 100.0000. Modifier: Je me rends compte maintenant qu'il n'y a rien de tel qu'un pourcentage d'augmentation de 0 à n'importe quoi, par messages comme this).

Ce que j'ai essayé

var old_value = new Decimal(0.0000); 
 
var new_value = new Decimal(1.0000); 
 
var difference = new_value.sub(old_value).dividedBy(old_value).times(100).toFixed(4, 7); 
 

 
// without using Decimal.js, the equation above would be: 
 
// (new_value - old_value)/old_value * 100 
 

 
$(".result").text(difference.toString());
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/decimal.js/7.3.0/decimal.min.js"></script> 
 

 

 
<p class="result"></p>

+0

Je vous suggère de le manipuler avec une condition if –

Répondre

0

Je suppose l'équation est correcte, il était juste le résultat Infinity qui m'a jeté, alors voici la solution à « gérer » la question:

var old_value = "38.1200"; 
 

 
if (old_value === "0.0000") { 
 
    // show an infinity sign or something 
 
    $(".result").text("HI!!"); 
 
} else { 
 
    old_value = new Decimal(old_value); 
 
    var new_value = new Decimal(19.0600); 
 
    var difference = new_value.sub(old_value).dividedBy(old_value).times(100).toFixed(4, 7); 
 

 
    $(".result").text(difference.toString()); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/decimal.js/7.3.0/decimal.min.js"></script> 
 

 
<p class="result"></p>