Javascript计算产生意想不到的结果
Javascript Calculations Producing Unexpected Results
<head>
<title>Javascript Test</title>
</head>
<body>
<script>
function calc_form() {
discPerc = document.forms["calc"].elements["disc_perc"].value;
totDays = document.forms["calc"].elements["tot_days"].value;
discPer = document.forms["calc"].elements["disc_per"].value;
discDays = document.forms["calc"].elements["disc_days"].value;
discCalc = Math.round([(discPerc/100)/((100-discPerc)/100)]*(totDays/(discPer-discDays)));
document.forms["calc"].elements["result"].value = discCalc*100 + "%";
document.getElementById("result1").innerHTML = discCalc*100 + "%";
//return Math.round(discCalc);
}
</script>
<form name = "calc">
Discount Percentage:
<br>
<input type = "text" name="disc_perc">
<br>
Enter Total Days in a year:
<br>
<input type="text" name="tot_days">
<br>
Enter Discount Days:
<br>
<input type="text" name="disc_days">
<br>
Enter Discount Period
<br>
<input type="text" name="disc_per">
<input type="button" value="Calculate" onclick = "calc_form()">
<br> <br>
Cost of forgoing discount:
<br>
<input type="text" id="result">
</form>
<p id="result1"></p>
</body>
上面的代码正在生成意外的结果。当然,其中有一个错误,但我无法理解。当我在 Math.round 函数中封装 discCalc 变量时,输出与我不这样做时完全不同。
请有人解释这种差异。
谢谢。
我只是通过使用变量.toFixed(2)而不是使用Math.round()函数来解决这个问题。所以代码是:
<script>
function calc_form() {
discPerc = document.forms["calc"].elements["disc_perc"].value;
totDays = document.forms["calc"].elements["tot_days"].value;
discPer = document.forms["calc"].elements["disc_per"].value;
discDays = document.forms["calc"].elements["disc_days"].value;
//discCalc = Math.round([(discPerc/100)/((100-discPerc)/100)]*(totDays/(discPer-discDays)));
discCalc = [(discPerc)/((100-discPerc))]*(totDays/(discPer-discDays));
discCalc_2 = discCalc*100;
document.forms["calc"].elements["result"].value = discCalc_2.toFixed(2) + "%";
document.getElementById("result1").innerHTML = discCalc_2.toFixed(2) + "%";
//return Math.round(discCalc);
}
</script>
<form name = "calc">
Discount Percentage:
<br>
<input type = "text" name="disc_perc">
<br>
Enter Total Days in a year:
<br>
<input type="text" name="tot_days">
<br>
Enter Discount Days:
<br>
<input type="text" name="disc_days">
<br>
Enter Discount Period
<br>
<input type="text" name="disc_per">
<input type="button" value="Calculate" onclick = "calc_form()">
<br> <br>
Cost of forgoing discount:
<br>
<input type="text" id="result">
</form>
<p id="result1"></p>
相关文章:
- JavaScript 模块模式给出了意想不到的结果
- 使用 jQuery 从 HTML 获取 id,给出意想不到的结果
- Javascript for loop产生意想不到的结果
- Javascript计算产生意想不到的结果
- 比较 JavaScript 中的浮点数会产生意想不到的结果
- 弄乱jquery产生了意想不到的结果
- 当元素相等时,Array.sort() 会产生意想不到的结果
- 在JavaScript中循环获得意想不到的结果
- Math.round与Math.ceil相比会产生意想不到的结果
- CSS旋转和平移转换会产生意想不到的结果
- 在Javascript函数中传递参数产生意想不到的结果
- 函数迭代日期数组会产生意想不到的结果
- 重新启动函数会产生意想不到的结果
- CSS为jQuery页面生成与意想不到的结果
- json字符串中的数组长度在angular ng-repeat中返回意想不到的结果
- Javascript:从对象方法内部调用回调函数,产生意想不到的结果
- Javascript: Async嵌套函数在其他Async函数中会产生意想不到的结果
- Raphael-使用transform缩放js路径-意想不到的结果
- 使用窗口.反复打开会产生意想不到的结果
- Lodash isUndefined提供了意想不到的结果