JavaScript parseFloat错误:1.445+;2 = 3.4450000000000003
我在创建一个简单的javaScript演示时遇到了这种奇怪的异常情况,我将用它来教我11岁的孩子基本的编码。我认为,在使用javaScript解析float javaScript函数之前,可能没有对输入字符串进行清理。该程序适用于其他浮点小数,如2.5+3=5.5。但在这一实例中,1.445+2=3.4450000000003。纯粹出于好奇,我想知道这里发生了什么。因此,在没有任何进一步延迟的情况下,下面是JavaScript代码:JavaScript parseFloat错误:1.445+;2 = 3.4450000000000003,javascript,html,parsefloat,Javascript,Html,Parsefloat,我在创建一个简单的javaScript演示时遇到了这种奇怪的异常情况,我将用它来教我11岁的孩子基本的编码。我认为,在使用javaScript解析float javaScript函数之前,可能没有对输入字符串进行清理。该程序适用于其他浮点小数,如2.5+3=5.5。但在这一实例中,1.445+2=3.4450000000003。纯粹出于好奇,我想知道这里发生了什么。因此,在没有任何进一步延迟的情况下,下面是JavaScript代码: var funct = null; function clar
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 />
=
+
-
×
÷
提醒社区:保持你的评论有用 这些答案中有一些合理的解释,这些解释描述了计算机中十进制数的问题,并考虑了Javascript
toFixed(…)
函数对其进行四舍五入。例如:
(parseFloat('1.445') * parseFloat('2')).toFixed(3);
可能与OP的注释重复:你问的基本问题并不太糟糕(这个问题很容易理解,但如果你不知道“浮点”这个短语,就很难搜索);然而,您的问题可能会得到如此多的反对票,因为您的示例代码太长了。您只需使用几行代码即可重新创建问题。此外,如果您要教授编程,则应鼓励使用有意义的变量名。值得注意的是,
toFixed
返回字符串。