2013-08-07 55 views
0

请考虑下面的JavaScript代码中的计算。与示例值:错误的JavaScript代码计算

  • investmentfix = 200.00
  • investmentvar = 123.12
  • nrofparts = 5.00

...控制台显示奇怪的结果值0200.00615.6。我不明白。我注意到这个值为200.00和615.6,后者是investmentvar * nrofparts的结果。但是我希望(和目标获取)的结果815.6(200 +(123.12 * 5.00)

错在这是不是涉及到一种格式问题

javascript代码:??

var result =0; 

result += (investmentfix + (investmentvar * nrofparts)); 

console.log(result); 
+4

是否有一些变量是字符串?它可能试图连接而不是添加它们。 – 2013-08-07 15:25:30

+0

我们可以看到更多的代码吗? – imulsion

+0

^^如果它们直接来自用户输入,它们将是字符串。 – 2013-08-07 15:26:00

回答

1

尝试以下操作:

result = parseFloat(0,10); 
result+=parseFloat(investmendfix,10)+parseFloat(investmentvar*nrofparts,10); 
console.log(result); 

这确保了JavaScript引擎在数字,而不是字符串解析变量

parseFloat()语法:parseFloat(myNumber,base);

+1

execllent,它的工作原理; thnx所有你的评论(!)我刚从表单字段获取值时,首先只使用了parseFloat。但是,Jeff的解决方案似乎表明,仍然需要在计算上应用parseFloat。 – Joppo

+0

如果变量不包含字符串,则所有内容都将按预期工作而不需要'parseFloat()'。 @ user2543182你可以使用'typeof(myVariable)== number'来找到哪个变量是一个字符串。如果它返回true,则该变量是一个数字,否则它保存另一种类型的值:'string','Object','Array'等。查找哪个变量不是字符串可以避免使用'parseFloat )'三次。 –