Foros del Web » Programación para mayores de 30 ;) » Java »

Problemas con Math.sin()/cos()

Estas en el tema de Problemas con Math.sin()/cos() en el foro de Java en Foros del Web. Hola gente... Mi problema es el siguiente, debo hacer una calculadora, una de sus tantas opciones es que saque seno, coseno y tg. Les dejo ...
  #1 (permalink)  
Antiguo 14/10/2009, 15:08
Avatar de almaesdi  
Fecha de Ingreso: enero-2005
Mensajes: 70
Antigüedad: 19 años, 3 meses
Puntos: 0
Problemas con Math.sin()/cos()

Hola gente...

Mi problema es el siguiente, debo hacer una calculadora, una de sus tantas opciones es que saque seno, coseno y tg.

Les dejo la pequeña linea de codigo.

Cita:
double xfuncion=0;
System.out.println("Ingrese el angulo(en grados) al cual sacarle el Sen");
xfuncion=sc.nextDouble();

//Conversion grados a radianes
xfuncion=Math.toRadians(xfuncion);

System.out.println("El resultado es: "+Math.sin(xfuncion)");
El problema es que si ingreso entre 0 y 90 grados, todo bien,
Pero cuando ingreso angulos superiores me da un numero raro...
Por ejemplo, si ingreso 180 grados como resultado me tira:
1.2246467991473532E-16

Deberia ser 1 o 0, no recuerdo bn...pero no 1.2246467991473532E-16 xDD!

Ojala me puedan ayudar, porque igual necesito que saque bien el Sen para despues poder sacarle integral

Gracias
  #2 (permalink)  
Antiguo 15/10/2009, 02:09
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: Problemas con Math.sin()/cos()

Hay problemas de precisión en los métodos de java. Prueba a redefinir PI con la mayor cantidad de digitos posible xD.

O lee aquí si ofrecen alguna otra solución:

http://www.neowin.net/forum/index.php?showtopic=622071
  #3 (permalink)  
Antiguo 15/10/2009, 09:26
 
Fecha de Ingreso: octubre-2009
Mensajes: 27
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Problemas con Math.sin()/cos()

quizas si redondearas la respuesta a 2 decimales podria solucionarte ya que

1.2246467991473532E-16 es igual a 1.2246467991473532 x (10)elevado a la -16

perdon si me equivoco solo trato de ayudar y aun soy nuevoen esto salu2
  #4 (permalink)  
Antiguo 15/10/2009, 10:45
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: Problemas con Math.sin()/cos()

Eso, también podrías hacerlo así (por poner un ejemplo):

double senX = Math.sin(xfuncion);
if (senX < 0.00001 && senX > -0.00001) {
senX = 0;
}
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:50.