2017-10-08 43 views
0

期望的行为使用Decimal.js计算两个数字之间百分比增加/减少的正确方法是什么?

显示增加的百分率的比较/减少的new_valueold_value,表示负指示符时出现了一个下降,和4位小数(与尾随零如有必要)。

实际行为


如果old_value38.1200new_value19.0600结果是-50.0000

不太好
如果old_value0.0000new_value1.0000结果是Infinity(我预计结果是100.0000编辑:我现在认识到,不存在从0到任何东西,例如this等帖子的百分比增加的事情。

我已经试过

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

我建议你用if条件处理它 –

回答

0

我假设公式是正确的,它只是在Infinity结果丢给我,所以这里是解决“处理”问题:

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>

相关问题