2011-07-20 11 views
0

次の計算は、値を手作業で記述するとうまく動作しますが、動的値を使用すると常にNaNになります。計算で動的値を持つNaNが返される

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

私はそれがすべて正常に動作し、次の値を追加した場合:私は手で値を書き出す場合、それはまた、[OK]を作品

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を返します。

+1

にあなたのユーザー入力を包むようにしてください右入力であることを確認してくださいあなたは、彼らが文字列でないことを確認している?作るために計算する前の状態でISNUMERIC()を使用することができますか –

+0

値が "_正確に同じ_"の場合、問題は発生しませんでしたか?あなたは彼らが弦ではないと言ったのを知っていますが、私はまだ彼らがいると賭けています。 –

+0

は扱いにくい問題のようです。 plzはhttp://jsfiddle.netであなたの問題を再現します。 – Ghostoy

答えて

1

parseFloat()またはparseInt()関数を使用してみます。 parseFloatのdecimalとfloatの間の区切り文字はドットでなければなりません。 そして、あなたはそれが

+0

Thanks Fedor - 下のコメントを参照してください。 –

1

はparseFloatは()関数

+0

こんにちはJura、私は実際にこれを試してみましたが、助けてくれてありがとうございました。どんな場合でもそれを行うことをお勧めします。 –

関連する問題