Javascript 将3个值在一定的百分比范围内进行比较

Javascript 将3个值在一定的百分比范围内进行比较,javascript,comparison,Javascript,Comparison,我试图做到这一点: 3个输入框 获取输入值并与特定百分比进行比较 如果值之间的偏差在3%以内。输出=某物 else输出其他东西 如果您有任何帮助,我们将不胜感激。这是一个代码示例,您可以从中派生逻辑 检查 document.getElementById(“checkValues”).onclick=function(){ var value1=parseFloat(document.getElementById(“value1”).value); var value2=parseFloat(

我试图做到这一点:

  • 3个输入框
  • 获取输入值并与特定百分比进行比较
  • 如果值之间的偏差在3%以内。输出=某物 else输出其他东西


    如果您有任何帮助,我们将不胜感激。

    这是一个代码示例,您可以从中派生逻辑

    
    检查
    document.getElementById(“checkValues”).onclick=function(){
    var value1=parseFloat(document.getElementById(“value1”).value);
    var value2=parseFloat(document.getElementById(“value2”).value);
    var value3=parseFloat(document.getElementById(“value3”).value);
    var maxValue=parseFloat(Math.max(Math.max(value1,value2,value3));
    
    如果(1-(value1/maxValue)只需对值排序并计算:

    函数计算百分比(a、b、c){
    var值=[a、b、c];
    sort(函数(a,b){返回a-b;});
    返回(值[2]-值[0])/值[0];
    }
    写(计算百分比(100101102)+'
    ');
    document.write(calculatePercent(80,90,100)+'
    ”;
    首先创建基本级别如下所示的输入:

    <input type="text" width="3em">
    
    这将在屏幕上显示所有的输入标记。现在,我们可以迭代这些标记,并获得我们需要的数据,我将把这些数据放入一个数组中

    注意:每个输入标记都有一个名为value的属性,该属性存储放置在输入中的字符串,该字符串可以通过在前面放置一个
    +
    来更改为数字

    var numbers = [],
        inputs  = document.getElementsByTagName("input");
    
    for(var i = 0; i < inputs.length; ++i)
    {
        var number = +inputs[i].value;
        // Makes sure that a number is there.
        if(!isNaN(number))
            numbers.push(number);
    }
    
    使用计算功能,我们现在可以专注于显示


    现在,我们需要一个按钮来调用一个函数,并为我们创造奇迹!这也可以通过输入标签来实现,但要改变它的类型

    <input type="submit" value="calculate" onclick="calculate()">
    
    这些标记有一个名为
    innerHTML
    的属性,在该属性中,我们可以通过编辑来完成,嗯…,更改内部HTML

    var p = document.getElementById("display");
    p.innerHTML = "Hello World!";
    

    现在,我们可以将以上所有内容结合起来,得到:

    
    

    //数字的公差应在以下范围内。 var公差=3, //预期输入的数量。 金额=3; 函数计算(){ 变量数=[], 输入=document.getElementsByTagName(“输入”); //获取所有数字。 对于(变量i=0;iinrange=(100*pdiff)我如何扩展到文档。写(“”)这3个数字之间的百分比差异?这有帮助吗?抱歉,可能有一个错误。我试图从手机lol中执行此操作。我不喜欢使用
    文档。写(“”
    ,因为它在当前HTML页面上写入:)看起来效果不错,我只需要截断或切掉输出,这样值就不会太长…嗯…我更新了它,以更好地显示结果。现在,它当前的设置方式将显示所有不在公差范围内的结果。要解决这个问题,请删除for循环中的
    &&inrange
    ,然后替换
    inrange=(100*pdiff)要舍入,看。这可能有点棘手。我在答案中添加了一个我通常使用的函数。
    
    var inrange   = true,
        tolerance = 3/*In percentage!*/;
    for(var i = 0; i < numbers.length && inrange; ++i)
        for(var j = i + 1; j < numbers.length && inrange; ++j)
        {
            var diff = (numbers[i] - numbers[j]),
            // Need to make sure diff is positive. Could use Math.abs...
            pdiff    = 2 * (diff < 0 ? -1*diff : diff) 
                     / (numbers[i] + numbers[j]);
            // If false will cause the loops to stop.
            inrange = (100 * pdiff) <= tolerance;
        }
    
    <input type="submit" value="calculate" onclick="calculate()">
    
    <p id="display"></p>
    
    document.getElementById("display");
    
    var p = document.getElementById("display");
    p.innerHTML = "Hello World!";