Расчет возвращает NaN с динамическими значениями - PullRequest
0 голосов
/ 20 июля 2011

Следующий расчет работает хорошо, если я кодирую значения вручную, но с динамическими значениями я всегда получаю 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 ]

1 голос
/ 20 июля 2011

Попробуйте включить пользовательский ввод в функцию parseFloat ()

1 голос
/ 20 июля 2011

попробуйте использовать функции parseFloat () или parseInt ().Разделитель между десятичной и плавающей частями для parseFloat должен быть точкой.И вы можете использовать Isnumeric () в условии перед вычислением, чтобы убедиться, что это правильный ввод

...