【问题标题】:Getting a NaN on a variable that is quite clearly a number在一个很明显是数字的变量上获取 NaN
【发布时间】:2012-07-30 23:55:09
【问题描述】:

这是迄今为止我见过的最奇怪的错误。

在我的程序中,我有一个名为 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

我真的不知道为什么会这样。我已经尝试了一切来解决它;我已将其转换为字符串,然后返回,将其四舍五入到小数点后 2 位,加上 0.0001 - 没有任何效果!这是我现在可以让它“工作”的唯一方法:

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

这会将接近 avgVolMix 的数字分配给 temp。但是,正如您所看到的,这是非常糟糕的编程。我还应该注意,这不仅仅与这个变量有关,与我正在使用的库相关联的每个变量都会这样做(我正在研究音乐可视化器)。有谁知道为什么会发生这种情况?

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

【问题讨论】:

  • avgVolMix来自哪里?
  • 如果你这样做console.log(parseFloat(moveRatio))会发生什么?
  • typeof avgVolMix 显示了什么?
  • 你能用你的代码创建一个jsfiddle 吗?
  • 如果是 NaN,那就是 NaN;它可能只是一个字符串,在您看来就像一个数字。尝试使用 typeof 以确保

标签: javascript variables nan


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2021-08-18
    • 1970-01-01
    • 2022-10-23
    • 2018-07-15
    • 2021-04-24
    • 2016-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多