2016-03-03 20 views
5

hello Tôi phải tính toán differenciate theo độ và tôi có đoạn mã sau nhưng tôi không trả về giá trị chính xác. Quyền duy nhất là giá trị của sin90 theo độ = 1hàm lượng giác nhanh chóng (cos, tan, arcsin, arcos, arctan)

//////***** DEGREES ******////// 
var sinus = sin(90.0 * M_PI/180) 
var cosinus = cos(90 * M_PI/180) 
var tangent = tan(90 * M_PI/180) 

var arcsinus = asin(90 * M_PI/180) 
var arcosinus = acos(90 * M_PI/180) 
var arctangent = atan(90 * M_PI/180) 

Hoạt động đúng để trả về giá trị chính xác cho mọi hoạt động ở mức độ cos, tan và chức năng ARC của chúng là gì?

+0

'sin' và phần còn lại mất _angle trong radians_ như một cuộc tranh cãi. Tại sao bạn làm điều này '90 * 180/M_PI' thứ trong phần sau? – courteouselk

+0

bạn có thể viết câu trả lời của mình bằng một đoạn mã với giá trị là 90 không? bởi vì tôi không thực sự có được những gì bạn có ý nghĩa .. :) xin lỗi tôi mới @AntonBronnikov – kepi

Trả lời

10

Đây là thêm một vấn đề toán học hơn là một vấn đề Swift:

let sinus = sin(90.0 * M_PI/180) 
print("Sinus \(sinus)") 

let cosinus = cos(90 * M_PI/180) 
print("Cosinus \(cosinus)") 

let tangent = tan(90 * M_PI/180) 
print("Tangent \(tangent)") 

in

Sinus 1.0 
Cosinus 6.12323399573677e-17 
Tangent 1.63312393531954e+16 

xoang của 90 độ là 1 (đúng)

Cosinus 90 độ là 0. Giá trị 6e-17 là một giá trị rất nhỏ, bất kỳ phép làm tròn hợp lý nào sẽ coi nó bằng 0 (đúng). Thực tế là bạn không thể có được chính xác bằng không là do làm tròn lỗi trong phép tính.

Tangent 90 độ không được xác định (sin/tan = 1/0, chia cho 0 không được xác định). Nếu chúng tôi đã tính toán chính xác, bạn sẽ có thể nhận được một vô cùng. Trong trường hợp này, chúng tôi có 1 chia cho 6e-17, trở thành số lớn 1.6e16. Kết quả là chính xác.

Về các hàm nghịch đảo, hãy lưu ý một điều - các thông số của chúng không bằng độ hoặc radian. Kết quả của họ là ở độ/radian, ví dụ:

let arcsinus = asin(1.0) * 180/M_PI 
print("Arcsinus \(arcsinus)") 

in

Arcsinus 90.0 
+0

cảm ơn bạn sooooo nhiều !!!! – kepi

+0

vì vậy, tôi không phải thay đổi một cái gì đó? Mã của tôi là đúng như nó được? @Sulthan? Có cách nào để trả lại và hiển thị đúng giá trị trên màn hình không? – kepi

+0

@kepi Kết quả của bạn là chính xác, để hiển thị chúng cho người dùng, trước tiên bạn phải chuyển đổi chúng thành chuỗi. Tôi muốn giới thiệu 'NSNumberFormatter' sẽ xử lý làm tròn và định dạng cho bạn. – Sulthan

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