计算使用动态值返回NaN

时间:2011-07-20 09:19:36

标签: javascript math nan

如果我手动编码值,以下计算可以正常工作,但对于动态值,我总是以NaN结束。

vals.tension = Math.round( ( Math.pow( ( vals.frequency * ( vals.stringLength * 10 ) * vals.diameter ), 2 ) * ( Math.PI * vals.density / 9810000000000 ) ) * 100 ) / 100;

如果我添加以下值,一切正常:

Math.round( ( Math.pow( ( 389.723 * ( 66 * 10 ) * .44 ), 2 ) * ( Math.PI * 1300 / 9810000000000 ) ) * 100 ) / 100;
// 5.33

如果我手工写出值,它也可以正常工作:

var vals = {
frequency: 389.723,
stringLength: 66,
diameter: .44,
density: 1300
};

但如果我尝试通过用户输入动态重新创建完全相同的值,我会得到NaN。我已经通过console.log检查了这些值,它们完全相同(它们不是字符串)并且它们都被添加到对象中,但是在动态执行时(在Safari中)实际计算会返回NaN。

2 个答案:

答案 0 :(得分:1)

尝试使用parseFloat()或parseInt()函数。 parseFloat的十进制和浮点部分之间的分隔符应为点。 并且您可以在计算之前使用Isnumeric()处于条件状态以确保它是正确的输入

答案 1 :(得分:1)

尝试将用户输入包装到parseFloat()函数