PDA

Visualizza la versione completa : [C/C++]: Errore con la funzione floor


Tirofijo
14-09-2006, 18:42
Ho un problema con l'utilizzo della funzione floor, nella stesura di un qualsiasi frammento di codice ogni qualvolta vado a compilare (premetto che sto usando il Devc++) mi da sempre questo errore

[Warning] converting to `int' from `double'
Potrebbe essere colpa della libreria math.h?
Ringrazio anticipatamente per le delucidazioni a riguardo :)

Habanero
14-09-2006, 19:29
Succede solo con il compilatore C++ e non con un progetto C.

in ogni caso.... il prototipo di floor() Ŕ:

double floor (double);

ergo il valore di ritorno Ŕ ancora un double e non un int

Se fai:


double a,b;

a=7.89;
b=floor(a);



non otterrai errore.
Se invece fai:


double a;
int b;

a=7.89;
b=floor(a);


ottieni il warning da te indicato.

Per risolvere basta che esegui un cast ad int:

double a;
int b;

a=7.89;
b=(int)floor(a);

Tirofijo
14-09-2006, 21:04
Ti ringrazio, ora funge, quindi si trattava di una conversione da double a int, una sola curiositÓ: ma Ŕ proprio la funzione ad hoc di floor() nel math.h che adopera le variabili double?

f@nt@m@n
14-09-2006, 22:07
Tutte le funzioni di math.h accettano un double e restituiscono un double.
La mia prima risposta dopo tante domande :yuppi: :yuppi: :yuppi:

Tirofijo
15-09-2006, 12:31
Ok, thanks a lot :D

Loading