2017-05-09 82 views
-1

我想用js計算js中的角度。我經歷過,當分數在負數之間時,js會給我帶來不好的結果。例如-6/-3給我20093而不是2.負數除法

我該如何解決這個問題?在這裏下面你可以看到一部分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/den的,你可以看到。

在此先感謝

+0

使用絕對值怎麼樣? 'var m = Math.abs(num)/ Math.abs(den);' –

+4

一個側面的問題:設置網絡math.eval()需要String作爲參數。如果將參數轉換爲字符串會發生什麼? – reporter

+4

我對_math.js_不熟悉,所以'math.eval(num/den)'應該做什麼?爲什麼不用'math.eval'就可以使用'num/den'? _edit:_ @reporter可能是對的。不過我不明白你爲什麼要使用_math library_來進行簡單的計算。 – LuudJacobs

回答

0

你可以簡單地做-6/-3

在您的開發人員工具控制檯中運行此操作:alert(-6/-3);,您將看到。

我認爲math.eval()需要像"-6/-3"這樣的字符串。

+1

如果你傳遞math.evil -6/-3 - 你將它作爲參數傳遞給它,它可能強制爲一個字符串或者可能被mathjs識別爲一個數字 - 無論哪種方式,math.eval作爲參數獲取的是' 2'(沒有辦法知道它是怎麼得到的,所以6/3應該產生相同的無意義結果)...... OP聲稱的廢話'20093'可能是他的**實際**代碼的結果,而不是在問題中顯示的精簡代碼:p –

+0

THX,很好的答案! – Orlandster

+1

試圖添加一個編輯來將'math.evil'修正爲'math.eval',但編輯必須是6個字符長......這是爲什麼? – Martha