SoloCodigo
Programación General => C/C++ => C++ Builder => Mensaje iniciado 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
-
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;)
-
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...
-
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;
}
-
Vaya, al cortar y pegar el texto se han "ido" las tabulaciones
¿como lo hago para que quede más legible?
-
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.
-
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.