asp java脚本计算错误

来源:百度知道 编辑:UC知道 时间:2024/05/14 07:21:03
<input id="mm1" onblur="mz()"><br>
<input id="mm2" onblur="mz()"><br>
<input readonly id="mm3"><br>
<SCRIPT>
function mz()
{
try{
var n1 = parseFloat(document.all.mm1.value);
var n2 = parseFloat(document.all.mm2.value);
document.all.mm3.value = n1 + n2;
}
catch(e){document.all.mm3.value = "";}
}
</SCRIPT>
本来是想求两个文本框的和的

可是但数据是 2.3 2.4相加就会出现错误 高手帮助一下
可是 2.4+2.3应该等于4.7才对 问题还不是很明确是怎么样的原因 但是我使用了四舍五入 并取两位小数 可是得到想要的结果 不过还是谢谢回答的人

4.699999999999999是不是这个结果?这个是精度问题,不属于错误。

这是由于js计算精度引起的,一般的作法是保留小数点后几位,不过那样精度太低,可以通过化小为整的方法,提高计算精度

<input id="mm1" onblur="mz()"><br>
<input id="mm2" onblur="mz()"><br>
<input readonly id="mm3"><br>
<SCRIPT>
function mz()
{
n1=document.getElementById("mm1").value
n2=document.getElementById("mm2").value
sn1=n1.length-n1.lastIndexOf(".")-1
sn2=n2.length-n2.lastIndexOf(".")-1
if(sn1>sn2)
{sn=sn1}
else
{sn=sn2}
oLength="1"
for(i=0;i<sn;i++)
{
oLength+="0"
}
document.getElementById("mm3").value=(n1*oLength+n2*oLength)/oLength;
}
</SCRIPT>