PDA

View Full Version : Problemi con formati numerici


Abdujaparov
10-05-2007, 19:58
Salve a tutti ho una funzione che genera una variabile uniforme tra a e b:
double uniform(double a, double b, long *seed)
{
double u;
printf("Parametri: %lf, %lf\n", a, b);
*seed = rnd32 (*seed);
u = (*seed) * RATIO;
u = a + u * (b-a);
printf("Ritorno: %lf\n", u);
return (u);
}

Io provo a richiamarla in questo modo:
double prova=uniform(0.0, 3.0, &seme2);
printf("Prova: %lf, vediamo: %lf\n", uniform(0.0, 3.0, &seme2), prova);

Solo che ho dei problemi, ho provato a fare delle prove e questo č l'output:
Parametri: 0.000000, 3.000000
Ritorno: 2.111209
Prova: -1144392789.000000, vediamo: 193124239.945278
Parametri: 0.000000, 3.000000
Ritorno: 2.087512
Parametri: 0.000000, 3.000000
Ritorno: 2.806405
Prova: 992633187.000000, vediamo: 193124239.945278
Parametri: 0.000000, 3.000000
Ritorno: 1.252941
Parametri: 0.000000, 3.000000
Ritorno: 1.179957


In pratica i parametri vengono presi correttamente, il valore che sta per essere ritornato č corretto, perņ il valore che memorizzo nel double o che stampo direttamente a video č completamente sballato, a cosa puņ essere dovuto l'errore?
Grazie a tutti, ciao ciao.

wingman87
10-05-2007, 20:11
Prova nella printf ad usare %f o %g al posto di %lf

Abdujaparov
10-05-2007, 20:12
Ho trovato l'errore, la funzione per la generazione di una variabile uniforme era definita in un file esterno ed avevo dimenticato di inserire:

extern double uniform(double a, double b, long *seed);

Grazie a tutti e scusate il disturbo.
Ciao ciao.