PDA

Visualizza la versione completa : [c]divisione fra costanti


Bakaburg
28-02-2009, 22:05
Ciao a tutti
Per un esercizio di c ho creato un convertitore di temperature da fahrenait a celsius e viceversa; ecco le funzioni:


float celsToFah(float cels)
{
return 9 / 5 * cels + 32;
}

float fahToCels(float fah)
{
return 5 / 9 * (fah - 32);
}


Ma mi sono accorto che non funzionava: nel primo caso mi dava semplicemente il risultato di cels + 32, nel secondo 0. Ho capito che il problema erano le costanti: il rapporto 9 / 5 viene approssimato ad uno ed il rapporto 5 / 9 a 0.
Il problema facilmente reversibile (basta spostare la parte frazionale dopo la variabile.

Ma normale che non si possa effettuare divisioni fra interi? e se voglio definire numeri reali (es. pigreco) come faccio?

oregon
28-02-2009, 22:44
Devi indicare tipo e precisione delle costanti



float celsToFah(float cels)
{
return 9.0f / 5.0f * cels + 32.0f;
}

float fahToCels(float fah)
{
return 5.0f / 9.0f * (fah - 32.0f);
}

Bakaburg
28-02-2009, 22:47
Ah, ti ringrazio, non conoscevo questo operatore.

oregon
28-02-2009, 22:50
Originariamente inviato da Bakaburg
Ah, ti ringrazio, non conoscevo questo operatore.

Nessun operatore ...

MacApp
02-03-2009, 12:00
Originariamente inviato da Bakaburg
e se voglio definire numeri reali (es. pigreco) come faccio?
pigreco non ha una rappresentazione decimale finita, quindi non puoi ;-)

YuYevon
02-03-2009, 12:29
Originariamente inviato da MacApp
pigreco non ha una rappresentazione decimale finita, quindi non puoi ;-)

Vabb si pu fare lo stesso con una certa approssimazione... d'altra parte in C la costante pi greco/a gi definita in math.h e si chiama M_PI. Non ricordo quale sia la precisione, mi pare 20 cifre dopo la virgola.

Loading