2012-03-14 16 views

Trả lời

145

Bạn có thể sử dụng một chức năng như thế này để làm việc chuyển đổi:

function toDegrees (angle) { 
    return angle * (180/Math.PI); 
} 

Lưu ý rằng các chức năng như sin, cos, và vân vân không gửi lại góc, họ mất góc như đầu vào. Dường như với tôi rằng nó sẽ hữu ích hơn cho bạn để có một chức năng có thể chuyển đổi một đầu vào mức độ radian, như thế này:

function toRadians (angle) { 
    return angle * (Math.PI/180); 
} 

mà bạn có thể sử dụng để làm điều gì đó như tan(toRadians(45)).

20

Nhân kết quả theo số 180/Math.PI để chuyển đổi từ radian thành độ.

Bạn cũng có thể xác định chức năng của riêng bạn:

function sinDegrees(angle) {return Math.sin(angle/180*Math.PI);}; 

và vân vân.

+1

Điều này thực sự nên được đặt tên là 'sinDegrees' để tránh nhầm lẫn –

+0

Đúng. Tôi đã nhìn thấy một số trang web gọi là 'sind' để giữ cho nó ngắn. Cá nhân tôi giữ nó thành 'tội lỗi' bởi vì tôi biết rằng 'tội lỗi' sau đó sẽ là bằng cấp và 'Math.sin' trong radian, nhưng đó là trên đầu của tôi. –

+3

-1: sin() không trả về một góc. Đối số đầu vào của nó là một góc. –

0

Tạo chức năng chuyển đổi của riêng bạn để áp dụng toán học cần thiết và thay vào đó gọi hàm đó. http://en.wikipedia.org/wiki/Radian#Conversion_between_radians_and_degrees

+5

Trong khi điều này về mặt lý thuyết có thể trả lời câu hỏi, [nó sẽ là thích hợp hơn] (http: // meta. stackexchange.com/q/8259) để bao gồm các phần thiết yếu của câu trả lời ở đây và cung cấp liên kết để tham khảo. –

11

tôi đã tạo riêng chút lười biếng Toán-Object của tôi cho độ (MathD), hy vọng nó sẽ giúp:

//helper 
/** 
* converts degree to radians 
* @param degree 
* @returns {number} 
*/ 
var toRadians = function (degree) { 
    return degree * (Math.PI/180); 
}; 

/** 
* Converts radian to degree 
* @param radians 
* @returns {number} 
*/ 
var toDegree = function (radians) { 
    return radians * (180/Math.PI); 
} 

/** 
* Rounds a number mathematical correct to the number of decimals 
* @param number 
* @param decimals (optional, default: 5) 
* @returns {number} 
*/ 
var roundNumber = function(number, decimals) { 
    decimals = decimals || 5; 
    return Math.round(number * Math.pow(10, decimals))/Math.pow(10, decimals); 
} 
//the object 
var MathD = { 
    sin: function(number){ 
     return roundNumber(Math.sin(toRadians(number))); 
    }, 
    cos: function(number){ 
     return roundNumber(Math.cos(toRadians(number))); 
    }, 
    tan: function(number){ 
     return roundNumber(Math.tan(toRadians(number))); 
    }, 
    asin: function(number){ 
     return roundNumber(toDegree(Math.asin(number))); 
    }, 
    acos: function(number){ 
     return roundNumber(toDegree(Math.acos(number))); 
    }, 
    atan: function(number){ 
     return roundNumber(toDegree(Math.atan(number))); 
    } 
}; 
0

Tôi thích một cách tiếp cận chức năng tổng quát hơn:

/** 
* converts a trig function taking radians to degrees 
* @param {function} trigFunc - eg. Math.cos, Math.sin, etc. 
* @param {number} angle - in degrees 
* @returns {number} 
*/ 
const dTrig = (trigFunc, angle) => trigFunc(angle * Math.PI/180); 

hay,

function dTrig(trigFunc, angle) { 
    return trigFunc(angle * Math.PI/180); 
} 

có thể được sử dụng với bất kỳ chức năng lấy radian nào:

dTrig(Math.sin, 90); 
    // -> 1 

dTrig(Math.tan, 180); 
    // -> 0 

Hy vọng điều này sẽ hữu ích!

Các vấn đề liên quan