理想行为
显示new_value与old_value相比的增加/减少百分比,在出现下降时显示负指标,并显示小数点4位(必要时为零)。
实际行为
好的
如果old_value为38.1200,new_value为19.0600,则结果为-50.0000
不怎么好
如果old_value是0.0000,new_value是1.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>
发布于 2017-10-08 05:58:24
我假设方程是正确的,正是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>
https://stackoverflow.com/questions/46627832
复制相似问题