J'ai quelques problèmes de calcul du cosinus 90 en Java en utilisant la fonction MATH.COS:
public class calc{ private double x; private double y; public calc(double x,double y){ this.x=x; this.y=y; } public void print(double theta){ x = x*Math.cos(theta); y = y*Math.sin(theta); System.out.println("cos 90 : "+x); System.out.println("sin 90 : "+y); } public static void main(String[]args){ calc p = new calc(3,4); p.print(Math.toRadians(90)); }
3 Réponses :
Ce que vous obtenez est probablement très, très petit nombre, qui sont affichés dans la notation exponentielle. La raison pour laquelle vous les obtenez est que PI / 2 n'est pas exactement représentable dans la notation IEEE 754, il n'ya donc aucun moyen d'obtenir le cosinus exact de 90/270 degrés. P>
Il suffit d'exécuter votre source et de retourner: absolument correct. La première valeur est presque 0. La seconde est 4 comme prévu. P> Ici vous doivent lire le Math .Ttoradiens () documentation qui dit: p> convertit un angle mesuré en degrés en un angle approximativement équivalent mesuré dans les radians. La conversion des degrés en radians est généralement inexacte. P>
blockQuote> qui vous donnera: p> 3 * cos (90 °) = 3 * 0 = 0 code> p>
Mais comment puis-je obtenir la sortie COS 90 en nombres décimaux?
Ok micsim. Merci pour la solution. :)
Essayez ceci:
public class calc { private double x; private double y; public calc(double x,double y) { this.x=x; this.y=y; } public void print(double theta) { if( ((Math.toDegrees(theta) / 90) % 2) == 1) { x = x*0; y = y*Math.sin(theta); } else if( ((Math.toDegrees(theta) / 90) % 2) == 0) { x = x*Math.cos(theta); y = y*0; } else { x = x*Math.cos(theta); y = y*Math.sin(theta); } System.out.println("cos 90 : "+x); System.out.println("sin 90 : "+y); } public static void main(String[]args) { calc p = new calc(3,4); p.print(Math.toRadians(90)); } }
Quelles sont les valeurs absurdes que vous obtenez?
hai phooji, les valeurs absurdes est 6.123233995736766e-17
Ce n'est pas absurde, c'est juste absurdement petit.
@ Ignacio Vazquez-Abrams: Alors, que dois-je faire pour faire la sortie de COS 90 = 0?
David, le nombre est très proche de zéro; Pour des cas pratiques, c'est zéro; Vous ne pouvez pas avoir 90 ans dans les radians pour que ce soit exactement 0. Il n'y a aucun moyen de représenter PI / 2 en 64 bits et d'attendre des résultats parfaits.
Vous pouvez utiliser des entiers au lieu de doubles. Multipliez à 10 ^ x, effectuez des calculs, convertir. x définit la précision. Il n'y a pas d'autre moyen de faire COS90 = 0.
@Tall: oke gars, je pense que je l'ai eu. Merci beaucoup pour votre aide. :)