Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Problemas con calculos de Math.PI Math.sin Math.cos

Estas en el tema de Problemas con calculos de Math.PI Math.sin Math.cos en el foro de Javascript en Foros del Web. Buenas amigos tengo un problema con calculos trigonométricos, cuando hago los calculos los valores no son precisos tengo estas funciones Código: function _angle(drag){ return (Math.PI ...
  #1 (permalink)  
Antiguo 28/11/2013, 09:06
Avatar de Lynxcraft  
Fecha de Ingreso: noviembre-2007
Ubicación: yecla murcia
Mensajes: 1.346
Antigüedad: 16 años, 5 meses
Puntos: 51
Problemas con calculos de Math.PI Math.sin Math.cos

Buenas amigos tengo un problema con calculos trigonométricos, cuando hago los calculos los valores no son precisos tengo estas funciones

Código:
function _angle(drag){
	return (Math.PI * (drag/180));	
}
la funcion _angle convierte los ángulos en radianes

bueno calculando la hipotenusa con un ángulo de 60 y un cateto adyacente de 100;

Código:
var  hipo = 100 / Math.cos(_angle(60)) ;
console.log(hipo); // imprime 199.99999999999994
el resultado tendría que ser 200

creo que el problema esta en la multiplicación del PI ya que si lo hago en una calculadora el resultado seria 1.047197551196598
pero el javascript me devuelve 1.0471975511965976

Alguien sabría como corregir esto.

Gracias
__________________
Sobran las ideas cuando faltan ganas de trabajar en ellas
Lynxcraft
  #2 (permalink)  
Antiguo 28/11/2013, 09:12
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 10 años, 8 meses
Puntos: 578
Respuesta: Problemas con calculos de Math.PI Math.sin Math.cos

1.0471975511965976

1.047197551196598

Si te fijas es sólo un redondeo... Por lo tanto tu calculadora es menos exacta que JavaScript, ya que éste te proporciona un número más exacto aunque de todas formas PI tiene infinitas cifras y es imposible hallarlo con total exactitud.
  #3 (permalink)  
Antiguo 28/11/2013, 09:18
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 3 meses
Puntos: 206
Respuesta: Problemas con calculos de Math.PI Math.sin Math.cos

No lo cuentes por ahí, pero javascript tiene un problema con la precisión de números en coma flotante.
http://jsfiddle.net/sEqB5/
  #4 (permalink)  
Antiguo 28/11/2013, 09:44
Avatar de Lynxcraft  
Fecha de Ingreso: noviembre-2007
Ubicación: yecla murcia
Mensajes: 1.346
Antigüedad: 16 años, 5 meses
Puntos: 51
Respuesta: Problemas con calculos de Math.PI Math.sin Math.cos

Cita:
Iniciado por PHPeros Ver Mensaje
1.0471975511965976

1.047197551196598

Si te fijas es sólo un redondeo... Por lo tanto tu calculadora es menos exacta que JavaScript, ya que éste te proporciona un número más exacto aunque de todas formas PI tiene infinitas cifras y es imposible hallarlo con total exactitud.
jeje nose creo que javascrip como dice marlanga no es preciso he correjido dicho redondeo con

parseFloat((Math.PI * (drag/180)).toFixed(16))

y ahora el calculo con Math.cos no funciona el valor devuelto es 200.00000000000009

no se como ajustarlo me temo que si utilizo toFixed no funcione bien XD
__________________
Sobran las ideas cuando faltan ganas de trabajar en ellas
Lynxcraft
  #5 (permalink)  
Antiguo 28/11/2013, 10:13
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 3 meses
Puntos: 206
Respuesta: Problemas con calculos de Math.PI Math.sin Math.cos

El error de precisión es tan pequeño, que a no ser que estés enviando un cohete a plutón, o haciendo un examen final de física usando javascript en vez de una calculadora, no influirá en el resultado de tus cálculos.
  #6 (permalink)  
Antiguo 28/11/2013, 15:26
Avatar de Lynxcraft  
Fecha de Ingreso: noviembre-2007
Ubicación: yecla murcia
Mensajes: 1.346
Antigüedad: 16 años, 5 meses
Puntos: 51
Respuesta: Problemas con calculos de Math.PI Math.sin Math.cos

Cita:
Iniciado por marlanga Ver Mensaje
El error de precisión es tan pequeño, que a no ser que estés enviando un cohete a plutón, o haciendo un examen final de física usando javascript en vez de una calculadora, no influirá en el resultado de tus cálculos.
Un error es un error pequeño o grande ,

La verdad en mi caso no importa mucho, lo único que visualmente me molestaba ya que tengo que hacer varias operaciones y al ver que los valores no correspondían como el caso que puse a principio dudaba si lo estaba haciendo bien o mal.

Bueno al final después de estar toda la tarde buscando soluciones, (la verdad me parece raro siendo un problema conocido no hayan tantas como me esperaba ) así que visto lo visto he tenido que crear una función que devuelve los resultados algo mas precisos.

Código Javascript:
Ver original
  1. <script>
  2. function __fxop(){ return _FXOP = ((0.2+0.4) !== 0.6 )?true:false; }
  3. function fixFloat(float){
  4.     if(typeof _FXOP == "undefined")_FXOP=__fxop();
  5.     if( !_FXOP )return float;
  6.     if( String(float).indexOf(".") != -1 ){
  7.         var l, d, n = String(float).split(".");
  8.         d = n[1]; l = d.length;
  9.         if( l >= 12 ){
  10.             d = d.split(""); d[l-1]=d[l-2];
  11.             float = parseFloat(Number(n[0]+"."+d.join("")).toFixed(l-1));
  12.         }
  13.     }
  14.     return float;
  15. }
  16. </script>

La verdad no encontrado otra solución y tampoco puedo estar mucho tiempo con esto pero si existe un función mejor que solucione el problema estaría encantado de verla

Gracias
__________________
Sobran las ideas cuando faltan ganas de trabajar en ellas
Lynxcraft
  #7 (permalink)  
Antiguo 28/11/2013, 16:36
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 3 meses
Puntos: 206
Respuesta: Problemas con calculos de Math.PI Math.sin Math.cos

Ví que habían clases para representar números flotantes, con métodos para realizar muchas operaciones matemáticas, pero para mí era más incomodo usarlas que el perjuicio que me produce el error de precisión.
Jajajaja, más preciso que tu calculadora. Este tipo es un cachondo.
  #8 (permalink)  
Antiguo 28/11/2013, 18:00
Avatar de Lynxcraft  
Fecha de Ingreso: noviembre-2007
Ubicación: yecla murcia
Mensajes: 1.346
Antigüedad: 16 años, 5 meses
Puntos: 51
Respuesta: Problemas con calculos de Math.PI Math.sin Math.cos

Cita:
Iniciado por marlanga Ver Mensaje
Ví que habían clases para representar números flotantes, con métodos para realizar muchas operaciones matemáticas, pero para mí era más incomodo usarlas que el perjuicio que me produce el error de precisión.
Jajajaja, más preciso que tu calculadora. Este tipo es un cachondo.
Si también vi algunas librerías pero como dices son incomodas además tenia que cargar varias para poder trabajar.


Saliendo un poco del tema
La Web que tienes en tu firma es tuya?

Sabes que el webGL reinicia los Mac.

Lo digo por que curiosamente hace unas semanas buscando información de otras cosas entre en la web y me encontré con ese problema.
__________________
Sobran las ideas cuando faltan ganas de trabajar en ellas
Lynxcraft
  #9 (permalink)  
Antiguo 29/11/2013, 04:21
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 3 meses
Puntos: 206
Respuesta: Problemas con calculos de Math.PI Math.sin Math.cos

Sí, es mía. No sabía lo del mac, pero como desprecio a apple, no voy a mover un dedo xd.
  #10 (permalink)  
Antiguo 29/11/2013, 13:03
Avatar de Lynxcraft  
Fecha de Ingreso: noviembre-2007
Ubicación: yecla murcia
Mensajes: 1.346
Antigüedad: 16 años, 5 meses
Puntos: 51
Respuesta: Problemas con calculos de Math.PI Math.sin Math.cos

Cita:
Iniciado por marlanga Ver Mensaje
Sí, es mía. No sabía lo del mac, pero como desprecio a apple, no voy a mover un dedo xd.
jeje si son unos cabro... pero prefiero a ellos que a micro... y mira que tengo pc (por los juegos )

Varios tutos que has publicado me han servido de mucho . Tienes una buena pagina sigue así .

Retomando el tema

Si no hay de momento mas soluciones lo marco como solucionado si en un futuro alguien lee esto y tiene otra solución, por que seria interesante por lo menos para mi
__________________
Sobran las ideas cuando faltan ganas de trabajar en ellas
Lynxcraft

Etiquetas: funcion
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 09:41.