【发布时间】:2013-08-20 13:13:43
【问题描述】:
我在创建一个简单的 javaScript 演示时遇到了这个奇怪的异常情况,我将用它来教我 11 岁的孩子编码的基础知识。我认为在使用 javaScript parse float javaScript 函数之前,我可能没有对输入字符串进行清理。该程序适用于其他浮点小数,即。 2.5 + 3 = 5.5。然而在这个例子中,1.445 + 2 = 3.4450000000000003。纯粹出于好奇,我想知道这里发生了什么。所以事不宜迟,下面是 JavaScript 代码:
var funct = null;
function clarifyOperation(x)
{
if(x=="add")
{
document.getElementById("operation").innerHTML=" + ";
funct="add";
}
else if(x=="subtract")
{
document.getElementById("operation").innerHTML=" - ";
funct="subtract";
}
else if(x=="multiply")
{
document.getElementById("operation").innerHTML=" × ";
funct="multiply";
}
else if(x=="divide")
{
document.getElementById("operation").innerHTML=" ÷ ";
funct="divide";
}
}
function solve()
{
var x=document.getElementById("inputX").value;
var y=document.getElementById("inputY").value;
var z;
if(funct=="add")
{
z=parseFloat(x)+parseFloat(y);
document.getElementById("result").value=z;
}
else if(funct=="subtract")
{
z=parseFloat(x)-parseFloat(y);
document.getElementById("result").value=z;
}
else if(funct=="multiply")
{
z=parseFloat(x)*parseFloat(y);
document.getElementById("result").value=z;
}
else if(funct=="divide")
{
z=parseFloat(x)/parseFloat(y);
document.getElementById("result").value=z;
}
}
这里是 HTML 代码:
<input type="text" value="" id="inputX"/>
<span id="operation"> </span>
<input id="inputY" type="text" value="" />
<span> = </span>
<input type="text" value="" id="result" /><br />
<input type="radio" name="operation" value="add" onchange="clarifyOperation(this.value)" />
<span>+</span><br />
<input type="radio" name="operation" value="subtract" onchange="clarifyOperation(this.value)" />
<span>-</span><br />
<input type="radio" name="operation" value="multiply" onchange="clarifyOperation(this.value)" />
<span>×</span><br />
<input type="radio" name="operation" value="divide" onchange="clarifyOperation(this.value)" />
<span>÷</span><br />
<input type="button" value="calculate" onclick="solve()" />
<hr />
提醒社区:保持您的评论有用。
【问题讨论】:
-
注意 OP:你问的基本问题还不错(这个问题很好理解,但如果你不知道“浮点数”这个短语就很难搜索");但是,您的问题可能会受到如此多的反对,因为您的示例代码太长了。只需几行代码即可重现问题。
-
另外,如果你要教授编程,那么你应该鼓励使用有意义的变量名。
标签: javascript html parsefloat