SoloCodigo

Programación General => C/C++ => C++ Builder => Mensaje iniciado por: bezujov en Martes 16 de Marzo de 2010, 19:34

Título: Error "Invalid floating point operation"
Publicado por: bezujov en Martes 16 de Marzo de 2010, 19:34
Buenas tardes.
Estoy programando una parte de código con bastantes operaciones simples (multiplicaciones y divisiones). Compila correctamente, pero cuando lo ejecuto me sale el error "Invalid floating point operation". No hay división por cero. Me da incluso si sustituyo la división por una multiplicación.
Estoy un poco desesperado porque no le veo ninguna lógica al error.
A ver si alguien tiene alguna idea de lo que puede estar pasando.

Gracias
Título: Re: Error "Invalid floating point operation"
Publicado por: Amilius en Miércoles 17 de Marzo de 2010, 01:13
Puede ser algun tipo de overflow o tal vez underflow. Tendrías que capturar dichas excepciones y agregar código para procesar esos casos especiales.

http://en.wikipedia.org/wiki/Arithmetic_underflow (http://en.wikipedia.org/wiki/Arithmetic_underflow" onclick="window.open(this.href);return false;)
http://en.wikipedia.org/wiki/Arithmetic_overflow (http://en.wikipedia.org/wiki/Arithmetic_overflow" onclick="window.open(this.href);return false;)
Título: Re: Error "Invalid floating point operation"
Publicado por: el bare en Miércoles 17 de Marzo de 2010, 05:54
que tal amigo, pon el codigo que te marca error para darnos una idea mas amplia.... :D y ver si hay algun error... :comp:

Saludos...
Título: Re: Error "Invalid floating point operation"
Publicado por: bezujov en Jueves 18 de Marzo de 2010, 18:44
No se si tiene algo que ver con el código. Estoy un poco desesperado. El error lo da en ejecución del programa (al compilar no da error).
Con los mismos datos introducidos al programa hay veces que da error y veces que no. Es desesperante.

Pongo una función donde me está dando errores.



int AceroLam::ObtenerClaseHebFlexoCompresionY(int perfil,double Nd){

   int clase=0;
   if (Fy==235) {
      clase=1;
   }
   if (Fy==275.0) {
      if (perfil<=600)
         clase=1;
      if (perfil==600){
         if (Nd<1968.0)
            clase=1;
         else
            clase=2;
      }
   }
   if (Fy==355) {
      if (perfil==600){
         clase=3;
         if (Nd<2605.0)
            clase=2;
         if (Nd<1965.0)
            clase=1;
      }
      if (perfil==550){
         if (Nd<1986.0)
            clase=1;
         else
            clase=2;
      }
      if (perfil==500){
         if (Nd<2001.0)
            clase=1;
         else
            clase=2;
      }

      if (perfil<=450)
         clase=1;

   }
   return clase;

}
Título: Re: Error "Invalid floating point operation"
Publicado por: bezujov en Jueves 18 de Marzo de 2010, 18:45
Vaya, al cortar y pegar el texto se han "ido" las tabulaciones
¿como lo hago para que quede más legible?
Título: Re: Error "Invalid floating point operation"
Publicado por: Unsire en Domingo 21 de Marzo de 2010, 20:12
Revisa también el separador de decimales en tu configuración regional, una vez me pasó que yo ponía 3.46 y mi teclado estaba configurado para interpretar 3,46.
parece que tu código está bien, un consejo, siempre usa variables double aunque estés introduciendo datos enteros.
Título: Re: Error "Invalid floating point operation"
Publicado por: bezujov en Domingo 28 de Marzo de 2010, 18:48
Gracias por las respuestas.

He pasado todas las variables a double. He modificado alguna cosilla del código y de momento ha dejado de darme el error.
A ver si no vuelve a pasar.

Un saludo.