2012-12-19 8 views

Odpowiedz

46

Czy próbujesz użyć stopni? Należy pamiętać, że sin i cos oczekują radianów.

Math.cos(Math.toRadians(354)) 
+1

naprawdę powinien przyjąć jego odpowiedzi prawidłowe. – Budius

13

Math.cos i Math.sin wziąć angles in radians, nie stopni. Więc można użyć:

double angleInDegree = 354; 
double angleInRadian = Math.toRadians(angleInDegree); 
double cos = Math.cos(angleInRadian); // cos = 0.9945218953682733 
+0

Tak, popełniłem błąd dla początkujących. Dzięki za rozwiązanie. – user1782922

+1

+1 lub użyć 'Math.cos (Math.toRadians (354))' – Pshemo

+0

@Pshemo Znacznie lepiej. Zmieniono. – assylias

5
public static double sin(double a) 

Parameters: 
a - an angle, in radians. 
Returns: 
the sine of the argument. 
0

żadna z odpowiedzi wyposażone moich potrzeb. Oto co miałem:

Zatokowy stopień (nie promieniujący). ten sposób można włączyć go z powrotem do kąta stopni:

double angle = Math.toDegree(Math.asin(sinusInDegree)); 

Objaśnienie: Jeśli masz 2 boków trójkąta, jest to jedyne rozwiązanie, że pracował dla mnie. Możesz calcalluate wszystko przy użyciu metryki normalnego stopnia, ale musisz przekonwertować Math.asin() z powrotem do stopnia dla prawidłowego wyniku. :)

2

Można to wykorzystać również:

degrees *= Math.PI/180; 
Math.cos(degrees) 
+0

Myślę, że 'Math # toRadians()' jest bardziej czytelny, ale dzięki za wzmiankę w ten sposób;) – Nicofisi