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

时间:2017-10-08 05:31:05

标签: javascript decimal percentage decimal.js

所需行为

new_value相比,显示old_value的增加/减少百分比,减少时显示负数指示,以及4位小数(必要时带尾随零)。

实际行为


如果old_value38.1200new_value19.0600,则结果为-50.0000

不太好
如果old_value0.0000new_value1.0000,则结果为Infinity(我希望结果为100.0000修改:我现在意识到,根据this这样的帖子,没有从0到任何事物的百分比增加。

我尝试过什么

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>

1 个答案:

答案 0 :(得分:-1)

我假设方程式是正确的,只是Infinity结果给了我,所以这里解决了&#34;句柄&#34;问题:

&#13;
&#13;
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());
}
&#13;
<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>
&#13;
&#13;
&#13;