Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/433.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript百分比问题_Javascript_Math - Fatal编程技术网

javascript百分比问题

javascript百分比问题,javascript,math,Javascript,Math,我试图计算以下公式,根据用户的输入返回0-100(a等级)的数值 分数=考试价值×考试分数+(100%− 考试价值)×当前成绩 我用下面的代码来做这件事 var total = ExamWorth * ExamScore + (100 - ExamWorth) * CurGrade; 我的3个变量是从html中提取出来的 <input type="text" class="form-control" id="aimGrade"> 然而,当我尝试和计算时

我试图计算以下公式,根据用户的输入返回0-100(a等级)的数值

分数=考试价值×考试分数+(100%− 考试价值)×当前成绩

我用下面的代码来做这件事

    var total = ExamWorth * ExamScore + (100 - ExamWorth) * CurGrade;
我的3个变量是从html中提取出来的

        <input type="text" class="form-control" id="aimGrade">

然而,当我尝试和计算时,我总是得到错误的答案,我相信我不知道如何将其转换为十进制


例如,ExamWorth=50 ExamCore=80和curGrade=70的输入应返回值90。我得到了7500的回报,同样的投入

我猜你把100%和100%混为一谈了

如果
ExamWorth
是介于
0
1
之间的值,则应使用
1-ExamWorth
而不是
100-ExamWorth

var total = ExamWorth * ExamScore + (1 - ExamWorth) * CurGrade;
如果
ExamWorth
是介于
0
100
之间的值,则需要除以
100

var total = (ExamWorth * ExamScore + (100 - ExamWorth) * CurGrade) / 100;

使用您给出的示例,您将得到
75
(而不是
7500
),这是计算最终分数的正确数字。

我猜您将100%和100%混为一谈

如果
ExamWorth
是介于
0
1
之间的值,则应使用
1-ExamWorth
而不是
100-ExamWorth

var total = ExamWorth * ExamScore + (1 - ExamWorth) * CurGrade;
如果
ExamWorth
是介于
0
100
之间的值,则需要除以
100

var total = (ExamWorth * ExamScore + (100 - ExamWorth) * CurGrade) / 100;

使用您给出的示例,您将得到
75
(而不是
7500
),这是计算最终分数的正确数字。

也许您可以将输入数字设置为:

<input type="number" class="form-control" id="aimGrade" min="0" max="100" />
最后,您可能需要重新进行计算。如果ExamWorth是100分之一(即百分比),则需要将最终结果除以100:

var total = (ExamWorth * ExamScore + (100 - ExamWorth) * CurGrade) / 100;
如果它真的是一个小数/比例(即介于0和1之间的值),则应为:

var total = ExamWorth * ExamScore + (1 - ExamWorth) * CurGrade;

也许您可以将您的输入编号为:

<input type="number" class="form-control" id="aimGrade" min="0" max="100" />
最后,您可能需要重新进行计算。如果ExamWorth是100分之一(即百分比),则需要将最终结果除以100:

var total = (ExamWorth * ExamScore + (100 - ExamWorth) * CurGrade) / 100;
如果它真的是一个小数/比例(即介于0和1之间的值),则应为:

var total = ExamWorth * ExamScore + (1 - ExamWorth) * CurGrade;

您的问题不会转换为十进制(当您除以100时,7500不会变成90)。您的算法完全错误。

请参见注释中的算法说明

此外(仅供参考),在处理来自用户提供的数据的值时,有两件事需要记住:

  • 从HTML中提取的所有值都将是字符串
  • 算法中的操作顺序可能会导致字符串 串联而不是数学加法
  • 下面是一个示例(单击展开代码段):

    var-worth=document.getElementById(“worth”);
    var分数=document.getElementById(“分数”);
    var等级=document.getElementById(“等级”);
    document.getElementById(“calc”).addEventListener(“单击”,函数)(){
    //将字符串转换为数字的方法有很多(没有双关语)
    var-worthVal=parseInt(worth.value,10);//显式
    var scoreVal=+score.value;//强制
    var gradeVal=Number(grade.value)//函数
    //算法:
    var examPer=(scoreVal/100)*worthVal;//%的考试成绩
    var gradeAvg=gradeVal+examPer/2;//等级的平均值
    //运算顺序:括号、指数、乘法、除法、加法、减法
    //由于该字符串的原因,它两侧的任何操作数通常都会转换为字符串
    //如果我们试图同时做所有的数学运算,我们必须非常小心操作的顺序
    console.log(“结果1:+(gradeVal+((scoreVal/100)*worthVal)/2”);
    //但是,如果我们分步计算,把结果和信息放在一起,就会简单得多
    控制台日志(“结果2:+gradeAvg);
    });
    
    您的问题没有转换为十进制(当您除以100时,7500不会变成90)。您的算法完全错误。

    请参见注释中的算法说明

    此外(仅供参考),在处理来自用户提供的数据的值时,有两件事需要记住:

  • 从HTML中提取的所有值都将是字符串
  • 算法中的操作顺序可能会导致字符串 串联而不是数学加法
  • 下面是一个示例(单击展开代码段):

    var-worth=document.getElementById(“worth”);
    var分数=document.getElementById(“分数”);
    var等级=document.getElementById(“等级”);
    document.getElementById(“calc”).addEventListener(“单击”,函数)(){
    //将字符串转换为数字的方法有很多(没有双关语)
    var-worthVal=parseInt(worth.value,10);//显式
    var scoreVal=+score.value;//强制
    var gradeVal=Number(grade.value)//函数
    //算法:
    var examPer=(scoreVal/100)*worthVal;//%的考试成绩
    var gradeAvg=gradeVal+examPer/2;//等级的平均值
    //运算顺序:括号、指数、乘法、除法、加法、减法
    //由于该字符串的原因,它两侧的任何操作数通常都会转换为字符串
    //如果我们试图同时做所有的数学运算,我们必须非常小心操作的顺序
    console.log(“结果1:+(gradeVal+((scoreVal/100)*worthVal)/2”);
    //但是,如果我们分步计算,把结果和信息放在一起,就会简单得多
    控制台日志(“结果2:+gradeAvg);
    });
    
    
    
    你能给出一些输入示例以及你得到的和你期望得到的吗?请发布一篇文章你能给出一些输入示例以及你得到的吗