2012-07-19 26 views
-2

我在html中的代码需要输入一个用户输入号码并进行计算,然后显示输出。用户选择的输入被放入一个公式中,并且公式的结果被添加到用户输入号码中,但是当它将两个号码相加时,它会添加一个小数点。例如,如果选择数字11,则Rchange的结果为0.22,因此.22然后将11添加到11,对于newResistance为11.22,而不是将其显示为110.22。Javascript函数添加两个不正确的号码

function calc(form) { 
    if (isNaN(form.resistance.value)) { 
     alert("Error in input"); 
     return false; 
    } 
    if (form.resistance.value.length > 32) { 
     alert("Error in input"); 
     return false; 
    } 
    var Rchange = .01 * 2 * form.resistance.value; 
    var newResistance = (form.resistance.value + Rchange); 
    document.getElementById("newResistance").innerHTML = chopTo4(newResistance); 
} 

function chopTo4(raw) { 
    strRaw = raw.toString(); 
    if (strRaw.length - strRaw.indexOf("0") > 4) strRaw = strRaw.substring(0, strRaw.indexOf("0") + 5); 
    return strRaw; 
} 
+0

这似乎类似于http://stackoverflow.com/questions/9743145/why-does-6-00-plus-5-00-5-006 -00。 – legoscia 2012-07-19 16:54:30

+0

似乎在这里工作确定:http://jsfiddle.net/3WnNf/1/ 所以问题必须在你的'form.resistance.value' – micadelli 2012-07-19 16:57:02

回答

0

HTML DOM元素属性始终是字符串。您需要将它们转换为用户的号码。

parseInt(form.resistance.value); parseFloat(form.resistance.value); +form.resistance.value; (任意三个都可以工作;我更喜欢前两种(使用parseInt函数,除非你正在寻找一个浮动))

0

尝试newResistance = +form.resistance.value + Rchange;。这会将其转换为数字。

0

它,因为它的治疗值的字符串。

form.resistance.value + Rchange都是字符串,所以它附加它。

使用parseInt JavaScript方法来获得十进制版本