【问题标题】:How do I calculate percentage difference in JS?如何计算JS中的百分比差异?
【发布时间】:2015-05-09 05:11:08
【问题描述】:

我想计算两个值之间的百分比差异。

我正在努力解决的问题是变量,我不明白如何使它工作,我什至不知道如何开始......所以如果我的代码有很多错误,我很抱歉.

我希望用户能够比较两个国家/地区的出生率和/或死亡率。应该有第一个选项,用户选择他想知道出生率还是死亡率。然后是选择第一个要比较的国家的选项,以及用户选择第二个国家的第三个选项。 但我真的不知道如何真正做到这一点。到目前为止,我得到了这个:

var choice = {
birth: {
    holland: 11,
    brasil: 17,
    irannie, 19,
    //amount of people who are born every 1000 citizens
},
death: {
    holland: 8,
    brasil: 6,
    irannie: 6,

    //amount of people who die every 1000 citizens, note two values are the same.. so what should the result show? I don't understand


}




  document.getElementById('calculate').addEventListener('click', function () {
    var first= +document.getElementById('onecountry').value;
    var second= +document.getElementById('secondcountry').value;
    // var snelheid = +document.getElementById('vervoer').value;





var percentage = first / second * 100;
var resultaat=Math.round(percentage*10)/10

我在这里面临的另一个问题是我不知道如何根据第一个选项显示结果,所以如果用户选择出生率,它应该显示第一次出生率占第二次出生的百分比率,死亡率也一样。

document.getElementById('div2').innerHTML = "Het verschil van het geboortecijfer ten opzichte met het andere land is  <b>" + resultaat + "</b>;

这是在 HTML 中:

<select id="choice">
    <option value="birth">Birth rate </option>
    <option value="death">Death rate</option>
</select>


<select id="onecountry">
    <option value="holland">Nederland</option>
    <option value="brasil">Brazillie</option>
</select>
<p></p>Het tweede land dat je wil vergelijken
<select id="secondcountry">
    <option value="holland">Nederland</option>
    <option value="brasil">Brazillie</option>
    <option value="irannie">Iran</option>
</select>

<p></p>
<p></p>Het percentageverschil is
<input id="calculate" type="button" value="Bereken!" />

 

区别是……

【问题讨论】:

  • 我认为您的意思不是equation(那会解决)?您是要生成过滤条件还是条件?
  • 我真的不知道我不是英国人,但我的意思是如果一个国家的出生率是 17,另一个国家的出生率是 18,那么它们之间的差异是 %
  • @azaela 我已经进行了编辑(目前正在等待审核)以希望澄清问题的含义。如果不是您的意思,请随时再次edit 或回滚我的编辑。
  • @azaela:哦,好吧,那真的是solving an equation

标签: javascript variables percentage equation rate


【解决方案1】:

这应该可以解决。我重新编写了计算方法并重新设计了界面。它是英文的,所以你需要翻译它。

您定义的choice 对象已被保留。那很好。然后,在calculate(),我:

  • 获取用户想要的统计数据(出生率或死亡率)
  • 获取第一和第二个国家
  • 通过访问choice 对象获取每个国家/地区的值和统计信息(使用choice[statistic] 获取内部birth 或death 对象,然后额外的[firstCountry] 或[secondCountry] 获取国家/地区的值)
  • 计算第一个国家/地区的价值占第二个国家/地区的百分比
  • 显示它。

var choice = {
  birth: {
    holland: 11,
    brasil: 17,
    irannie: 19
  },
  death: {
    holland: 8,
    brasil: 6,
    irannie: 6,
  }
}

function calculate() {
  var statistic = document.getElementById("choice").value;
  var firstCountry = document.getElementById("onecountry").value;
  var secondCountry = document.getElementById("secondcountry").value;
  var firstCountryValue = choice[statistic][firstCountry];
  var secondCountryValue = choice[statistic][secondCountry];
  var percentage = Math.floor((firstCountryValue / secondCountryValue) * 100);
  document.getElementById("result").innerText = "First as a percentage of second: " + percentage;
}
Choose statistic to compare:
<select id="choice">
  <option value="birth">Birth rate</option>
  <option value="death">Death rate</option>
</select>
<br/>Choose first country:
<select id="onecountry">
  <option value="holland">Nederland</option>
  <option value="brasil">Brazillie</option>
</select>
<br/>Choose second country:
<select id="secondcountry">
  <option value="holland">Nederland</option>
  <option value="brasil">Brazillie</option>
  <option value="irannie">Iran</option>
</select>
<br/>

<button onclick="calculate()">Calculate</button>
<span id="result"> 
</span>

【讨论】:

    【解决方案2】:

    好的,我想我明白你要做什么了。由于您的选项值映射了您在出生和死亡中使用的键,因此您可以从表单中传递值:

    var first = choice.birth[document.getElementById('onecountry').value];
    var second = choice.death[document.getElementById('secondcountry').value];
    

    您需要确保没有返回未定义的内容。如果你有这样的对象:

     var myObject = {};
    

    并尝试访问未设置的属性:

     myObject.name    // returns undefined
     myObject['name'] // returns undefined
    

    检查它是否真的存在是关键。

     if (first && second) {
        var percentage = first / second * 100;
        var resultaat=Math.round(percentage*10)/10
     }
    

    希望对您有所帮助。同样在您的 javascript 代码中,不要使用 html cmets,坚持使用 javascript 代码

     <!-- correct use of comment -->
     <p>Hello</p>
     <script type="text/javascript">
       // correct use of a comment here
       alert("hello");
     </script>
    

    【讨论】:

    • 好的,谢谢,我还是不太明白,还有一件事,如果是出生日期的死亡率,我如何显示百分比的结果。
    • @azaela 你的意思是你的出生率如何显示为死亡率的百分比?
    • @ArtOfCode 不,我的意思是用户首先选择他是否想知道死亡率或出生率差异的百分比。所以为了让它有意义,它应该只显示出生日期或死亡率百分比的结果。
    • @azaela 我想我明白了......所以你问你如何将它应用于这两种情况,如果他选择出生率,如果他选择死亡率,对吗?
    • @ArtOfCode ehm 是的,我可以将其与简单的东西进行比较:用户选择是否想知道两种水果的卡路里差异,或者是否想知道两种水果的维生素差异.用户然后选择他将比较哪两种水果。结果是卡路里或维生素的百分比差异。希望有意义
    猜你喜欢
    • 2020-11-27
    • 1970-01-01
    • 2021-06-17
    • 2021-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多