2017-07-01 8 views
0

私はここに新たなんだ:)JS数学の方程式の謎

ので、ジャバスクリプトでは、私は「単に」式のXを解決したかった: 私のオリジナルの式だった:

var X = (((((k/(cc**ci))-bk*)/(0.01*kg))-18)/((0.1+0.05*d1)*(280/(w+100)))-sd) 

もし私が

var X = (((((k*1.0/(cc*1.0*ci*1.0))-bk*1.0)/(0.01*kg*1.0))-18)/((0.1+0.05*d1*1.0)*(280/(w*1.0+100)))-sd*1.0) 

[OK]を...それはいくつかの途方もなく高い数値を返し、正しくリコール、私はそう、私はこれを試してみました...それは一つの問題だったと思います3210

これらの単純な変数では、 cc = 0、ci = 0、bk = 100、kg = 100、d1 = 10、w = 100、sd = 10の場合はかなりうまく機能しました。

しかし、 0に近づいていた、それは突然完全に夢中になりました。 この場合、k = 126.4の場合、解は0になります。しかし、代わりに "7.1054273576"が得られます。私は別のプログラム(私の古いポケット計算機の笑)でそれを計算し、彼らはすべてそれが0だと言う - >私は私の方程式が正しいはずだと思う。

私はk = 126.5を試しましたが、これは0.119を返します。 とk = 126.3、これは-0.119を返します。 これは正しいです。 したがって、論理的にはk = 126.4は0を返しますが、そうではありません。代わりに7.1(...)が返されます。

は私も(上記参照)の数字とすべての変数を置き換えてみました:

var X = (((((126.4*1/(1*1*1*1))-100*1)/(0.01*100*1))-18)/((0.1+0.05*10*1)*(280/(100*1+100)))-10) 

- >それはそう0 問題でなければなりませんが、これはまだ、7.1(...)に戻ります私の変数の一つではありません。 これらのテストでは、入力タイプ= "数値"オブジェクトを使用して結果を確認しましたが、関連性がある場合は結果を確認しています...

これはまだわかりませんが、これは完全に非合理的です私には謎がある。 Plsヘルプ!

+5

最後に「e-10」や何かがありませんか? '7.1054273576e-10'のようなもの? – Carcigenicate

+0

基本的なデータ型は精密計算では正確ではないので、他のコメントには「7.1054 ....」のように見えるかもしれませんが、実際には実際には本当に0に近いものになります。方程式の任意の一点でわずかな丸め問題...私は1行に1つの操作に分割することをお勧めしますので、値が各ステップで何であるかを正確に見ることができます – Chris

答えて

5

あなたは最後に少し欠場しました。

7.105427357601002e-15 
       ^
       Scientific Notation! 

注端でe-15Xはに等しいです。ことは、十進表記で、それはほとんどの用途が懸念している限り、

0.000000000000007105427357601002 

または0に非常に近いつまり、中

をです。それと0の違いは、丸めによって発生する可能性が高いです。

0

問題は実際に最後にe-15でした。だから他の誰かがこのページを見つけたら、彼らは不思議に思うことをやめることができます。

非常に簡単な解決法:この場合、カンマの後ろにある整数の数を減らすためにMath.round()を使用してください。「e」は数字を記述するために使用されません。

関連する問題