2017-05-09 8 views
-1

私はjsで角度を計算しようとしています。私は分割が負の数の間にあるときに私が悪い結果を与えることを経験しています。例えば-6/-3私に2の代わりに20093を教えてください。負の数で除算

どうすればこの問題を解決できますか?ここではconsole.logの一部を見ることができます。ここで Console.log

コードです:

var num = math.eval(parseInt(p[1]) - parseInt(d3.event.y)); 
    var den = math.eval(parseInt(p[0]) - parseInt(d3.event.x)); 
    if (den==0){ 
    var angle = 0; 
    }else{  
    var m = math.eval(num/den); 
    if(m<1){ 
     theta = m*100; 
    }else{ 
     theta = m*100; 
    } 
    } 

構文コードであなたが見ることができるようにNUM /デンです。事前

+0

絶対値はどうですか? 'var m = Math.abs(num)/ Math.abs(den);' –

+4

A面の質問:インターネットに接続するmath.eval()には引数として文字列が必要です。引数を文字列に変換するとどうなりますか? – reporter

+4

私は_math.js_に精通していないので、 'math.eval(num/den)'は何をすべきですか? 'num/den'を' math.eval'なしで使うのはなぜですか? _edit:_ @reporterはおそらく正しいです。それでも私は、あなたがなぜこれらのような簡単な計算のために_mathライブラリ_を使うのか分かりません。 – LuudJacobs

答えて

0

おかげであなたは、単に-6/-3を行うことができます。

デベロッパーツールコンソールでalert(-6/-3);を実行すると、これが表示されます。

math.eval()は、"-6/-3"のような文字列を想定しています。

+1

math.evil -6/-3を渡すと引数として2を渡します。おそらく文字列に強制されるか、mathjsによって数値として認識されます - いずれの場合でもmath.evalは引数として 'それがどのようになったのかわからないので、6/3は同じ無意識の結果を生むはずです)... OPの主張はおそらく彼の実際の**コードの結果であるというナンセンスの「20093」。質問に示されたコードを削除しました:p –

+0

THX、素晴らしい答え! – Orlandster

+1

'math.evil'を 'math.eval'に修正する編集を追加しようとしましたが、編集は6文字でなければなりません...なぜこれはですか? – Martha