problema con flotantes
Publicado por lope (1 intervención) el 09/10/2003 21:00:21
buenas. A ve si me podeis echar una ayuda con este codigo, es parte de un programa mas grande pero lo he metido como prueba en otro archivo:
#include <stdio.h>
#include <conio.h>
float mot_AT_integ_num(float x);
void main(){
float valor,valor2;
do{
scanf("%f",&valor);
valor2=mot_AT_integ_num(valor);
printf("mot at num =%f\n",valor2);
}while(valor!=-2);
}
float mot_AT_integ_num(float x){
if (x>=-0.6 && x<=-0.2){
printf("%f\n",(float)(x*x*x/1.2));
printf("%f\n",(float)((0.6*x*x)/(0.8)));
printf("%f\n",(float)(x*x*x/1.2)+((0.6*x*x)/(0.8)));
return (float)((float)(x*x*x/1.2)+(float)((0.6*x*x)/(0.8)));
}
if (x>-0.2 && x<=0.2){
return (float)(((-x*x*x)/(1.2))+((0.2*x*x)/(0.8)));
}
return 0;
}
lo que me ocurre es que cuando le envio el valor -0.6 me devuelve el valor 0, es decir, no entra en el if, cuando deberia entrar y devolverme un 0.09.
Muchas gracias de antemano.
#include <stdio.h>
#include <conio.h>
float mot_AT_integ_num(float x);
void main(){
float valor,valor2;
do{
scanf("%f",&valor);
valor2=mot_AT_integ_num(valor);
printf("mot at num =%f\n",valor2);
}while(valor!=-2);
}
float mot_AT_integ_num(float x){
if (x>=-0.6 && x<=-0.2){
printf("%f\n",(float)(x*x*x/1.2));
printf("%f\n",(float)((0.6*x*x)/(0.8)));
printf("%f\n",(float)(x*x*x/1.2)+((0.6*x*x)/(0.8)));
return (float)((float)(x*x*x/1.2)+(float)((0.6*x*x)/(0.8)));
}
if (x>-0.2 && x<=0.2){
return (float)(((-x*x*x)/(1.2))+((0.2*x*x)/(0.8)));
}
return 0;
}
lo que me ocurre es que cuando le envio el valor -0.6 me devuelve el valor 0, es decir, no entra en el if, cuando deberia entrar y devolverme un 0.09.
Muchas gracias de antemano.
Valora esta pregunta


0