首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Decimal.js计算两个数字之间的增减百分比的正确方法是什么?

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

Stack Overflow用户
提问于 2017-10-08 05:31:05
回答 1查看 501关注 0票数 1

理想行为

显示new_valueold_value相比的增加/减少百分比,在出现下降时显示负指标,并显示小数点4位(必要时为零)。

实际行为

好的

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

不怎么好

如果old_value0.0000new_value1.0000,那么结果就是Infinity (我希望结果是100.0000 )。编辑:我现在意识到不存在从0到任何东西的百分比增长,比如this)。

我试过什么

代码语言:javascript
复制
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());
代码语言:javascript
复制
<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>

EN

回答 1

Stack Overflow用户

发布于 2017-10-08 05:58:24

我假设方程是正确的,正是Infinity的结果让我感到震惊,下面是“处理”这个问题的解决方案:

代码语言:javascript
复制
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());
}
代码语言:javascript
复制
<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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46627832

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档