如果我手动编码值,以下计算可以正常工作,但对于动态值,我总是以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。
答案 0 :(得分:1)
尝试使用parseFloat()或parseInt()函数。 parseFloat的十进制和浮点部分之间的分隔符应为点。 并且您可以在计算之前使用Isnumeric()处于条件状态以确保它是正确的输入
答案 1 :(得分:1)
尝试将用户输入包装到parseFloat()函数
中