JavaScript计算中的结果不正确
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了JavaScript计算中的结果不正确,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2667字,纯文字阅读大概需要4分钟。
内容图文
![JavaScript计算中的结果不正确](/upload/InfoBanner/zyjiaocheng/710/aaabdcc864d74508952bd0aedd6a8bfe.jpg)
我是一个相当陌生的JavaScript,想把我的一个计算电子表格转换成我可以在网页上使用的东西.但是,计算结果不正确.
这是我的JavaScript:
<script type="text/javascript" language="JavaScript">
function calc() {
var onerepmax = document.wodCalculate.oneRepMax.value;
var percent = document.wodCalculate.percentOfOneRepMax.value / 100;
var addkg = document.wodCalculate.plusKg.value;
var zwischenschritt = onerepmax * percent;
var gewicht = zwischenschritt + addkg;
document.getElementById("weight").innerHTML = gewicht;
};
</script>
这是HTML:
<form action="" id="wodCalculate" name="wodCalculate">
<table cellspacing="0" cellpadding="10" border="0">
<tr><td>1 Rep Max</td><td><input type=text name="oneRepMax" value=""> kg<br></td></tr>
<tr><td>% vom 1RM</td><td><input type=text name="percentOfOneRepMax" value=""> %<br></td></tr>
<tr><td>Plus x kg</td><td><input type=text name="plusKg" value=""> kg<br></td></tr>
<tr><td><input type="button" value="Calculate" onClick="calc()"></td></tr>
</table>
</form>
<div id="weight">Weight</div>
它工作正常,直到“onerepmax”乘以“百分比”.但是,一旦它到达乘法结果的“addkg”(即给我“gewicht”),结果就会变得不正确.
例如,我想获得100公斤的10%并增加10公斤.而不是20千克,计算结果是1010.
谢谢你的帮助!
解决方法:
输入的值总是一个字符串,因此最终是字符串连接(“10”“10”是“1010”,而不是10 10,即20).
如果你使用输入类型=“数字”(OP不是,但其他人找到这个答案可能)并且浏览器支持它们,你可以使用valueAsNumber代替:
var onerepmax = document.wodCalculate.oneRepMax.valueAsNumber;
如果您使用的是type =“text”,或者浏览器不支持valueAsNumber:
您可以使用parseInt(value,10)(10 =十进制,基数10)转换用户输入值,如果它们是整数,例如:
var onerepmax = parseInt(document.wodCalculate.oneRepMax.value, 10);
这只是一个选择,你有几个:
>一元运算符:value = value将使用JavaScript引擎的标准规则将字符串强制转换为数字.该数字可以具有小数部分(例如,“1.50”是1.5).字符串中的任何非数字(除了用于科学记数法的e)都会产生结果NaN.此外,“”为0,这可能不直观.
var onerepmax = +document.wodCalculate.oneRepMax.value;
> Number函数:value = Number(value).做同样的事情.
var onerepmax = Number(document.wodCalculate.oneRepMax.value);
> parseInt函数,通常带有基数(数字基数):value = parseInt(value,10).这里的缺点是parseInt转换它在字符串开头找到的任何数字但在字符串后面忽略非数字,所以parseInt(“100asdf”,10)是100,而不是NaN.顾名思义,parseInt只解析整数.
// (Same as the first one above)
var onerepmax = parseInt(document.wodCalculate.oneRepMax.value, 10);
> parseFloat函数:value = parseFloat(value).允许小数值,并始终以十进制(从不八进制或十六进制)工作. parseInt对字符串末尾的垃圾做了同样的事情,parseFloat(“123.34alksdjf”)是123.34.
var onerepmax = parseFloat(document.wodCalculate.oneRepMax.value);
因此,选择适合您用例的工具.
内容总结
以上是互联网集市为您收集整理的JavaScript计算中的结果不正确全部内容,希望文章能够帮你解决JavaScript计算中的结果不正确所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。