2012-08-02 34 views
0

这是迄今为止我见过的最奇怪的错误。在一个非常明显的数字变量上获得NaN

在我的程序中,我有一个名为avgVolMix的变量。它是一个十进制变量,不是NaN(console.log(avgVolMix)打印类似0.3526246的东西)。但是,在赋值语句中使用变量会导致它破坏试图将其用于NaN的任何内容。例如:

console.log(avgVolMix); <- prints a working decimal 
var moveRatio = 10 + avgVolMix * 10; 
console.log(moveRatio); <- prints NaN 

我真的不知道为什么会发生这种情况。我试过一切来修复它;我将它转换为一个字符串,然后返回,将其舍入到小数点后两位,并将0.0001加到它 - 没有任何作用!这是唯一的办法,我可以得到它的“工作”,现在:

var temp = 0.0; 
for(i = 0; i <= avgVolMix; i+=0.1) 
    temp = i; 

这个分配一个编号,即接近avgVolMix来临时。但是,正如你所看到的,这是非常糟糕的编程。我还应该注意到,这不仅仅是因为这个变量而被破坏,与我正在使用的库相关的每个变量都会这样做(我正在使用音乐可视化工具)。有谁知道为什么会发生这种情况?

编辑:我现在实际上无法访问代码来测试这些东西,因为这是一个公司项目,我不太愿意打开一个jsfiddle。我只是想知道有没有人经历过这样的事情。我可以告诉你,我从这里得到了问题库:http://gskinner.com/blog/archives/2011/03/music-visualizer-in-html5-js-with-source-code.html

+1

'avgVolMix'从哪里来? – mariusnn 2012-08-02 02:26:07

+0

如果你执行'console.log(parseFloat(moveRatio))'会发生什么? – 2012-08-02 02:28:14

+2

'typeof avgVolMix'显示什么? – j08691 2012-08-02 02:29:11

回答

0

如果它显示变量值为NaN。然后尝试将该变量转换为parseInt();方法。希望它有效。因为我也遇到过这样的问题,并在尝试时解决。