java 脚本:3 + 0 = 30

java script: 3 + 0 = 30

JavaScript:

console.log('adding' + addThis + '+' + p1 +'=' + (addThis + p1));    

浏览器中的控制台 returns:adding3+0=30

我正在调试一个内插两个数字的循环。它工作正常,直到 addThis(需要添加到原始数字的数量)恰好为 3 且 p1(原始值)为 0。 每次差值 (addThis) 没有小数时都会发生错误计算。 同样的问题在:

adding6+0=60 ...or at..
adding9+0=90

...介于两者之间的所有情况都可以正常工作(例如控制台 returns:adding3.5999999999999996+0=3.59999999999999960

Dose it 'forget'要点? 它是否将这些值视为字符串?

我不能分享整个代码,但问题一定出在这个简单的计算上吧?

非常感谢您的想法和知识! ;)

如果要将字符串转换为整数,可以使用 parseInt function:

addThis = '3'
p1 = '0'
console.log('adding' + addThis + '+' + p1 +'=' + (parseInt(addThis) + parseInt(p1)))

3+0=30。似乎它必须是字符串(至少任何变量都是字符串)。您可以 re-visit 这些变量值为 initialized/changed 的行。否则你可以像下面这样使用:

addThis=Number(addThis); p1=Number(p1);   
console.log('adding' + addThis + '+' + p1 +'=' + (addThis + p1));