PDA

Visualizza la versione completa : [C]Problema approssimazione


francescoprogc
29-01-2008, 10:39
Ragazzi ho un problema...
Ho definito la seguente funzione



double troncaF(double x,int decimali)
{
char temp[10];

switch (decimali){

case 0: {
sprintf(temp,"%.0f",x);
return atof(temp);

};break;
case 1:{
sprintf(temp,"%.1f",x);
return atof(temp);
};break;
case 2:{
sprintf(temp,"%.2f",x);
return atof(temp);
};break;
case 3:{
sprintf(temp,"%.3f",x);
return atof(temp);
};break;
default:{
sprintf(temp,"%f",x);
return atof(temp);
};
}

//free(temp);

}


e quando vado a fare la seguente stampa

printf("PROVA = %f",troncaF(0.15,1));

mi aspetterei 0.2 ed invece visualizzo 0.1

invece se faccio

printf("PROVA = %f",troncaF(0.16,1));

visualizzo correttamente 0.2

come posso ovviare la problema???
Grazie a tutti

oregon
29-01-2008, 10:59
La funzione potrebbe essere semplicemente



#include <math.h>

double func(double x, int decimali)
{
return floor(x*pow(10, decimali)+0.5)/pow(10, decimali);
}

francescoprogc
30-01-2008, 14:22
grazie mille oregon,
sei stato gentilissimo come al solito

Loading