Używam Math.cos
i Math.sin
ale zwraca mi nieoczekiwane rezultaty takie jak:Jak korzystać z Math.cos() i Math.sin()?
Angle Sin Cos
354 0.8414 -0.5403
352 0.1411 0.98998
350 -0.958 -0.2836
Dlaczego uzyskać te wyniki?
Używam Math.cos
i Math.sin
ale zwraca mi nieoczekiwane rezultaty takie jak:Jak korzystać z Math.cos() i Math.sin()?
Angle Sin Cos
354 0.8414 -0.5403
352 0.1411 0.98998
350 -0.958 -0.2836
Dlaczego uzyskać te wyniki?
Czy próbujesz użyć stopni? Należy pamiętać, że sin
i cos
oczekują radianów.
Math.cos(Math.toRadians(354))
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
Tak, popełniłem błąd dla początkujących. Dzięki za rozwiązanie. – user1782922
+1 lub użyć 'Math.cos (Math.toRadians (354))' – Pshemo
@Pshemo Znacznie lepiej. Zmieniono. – assylias
public static double sin(double a)
Parameters:
a - an angle, in radians.
Returns:
the sine of the argument.
ż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. :)
Można to wykorzystać również:
degrees *= Math.PI/180;
Math.cos(degrees)
Myślę, że 'Math # toRadians()' jest bardziej czytelny, ale dzięki za wzmiankę w ten sposób;) – Nicofisi
naprawdę powinien przyjąć jego odpowiedzi prawidłowe. – Budius