PDA

View Full Version : [c++] è possibile ottenere il resto decimale?


Rizzolo
29-04-2010, 01:40
In una divisione fra due double è possibile ottenere il resto decimale?
L'operatore & vuole unicamente degli interi.
Grazie anticipatamente.

cionci
29-04-2010, 07:37
Se vuoi la parte parte frazionaria di un double...

double f = x - (long)x;

Dipende però cosa intendi per resto.
La divisione fra due double in teoria non ha resto. Puoi però decidere a quale cifra del quoziente fermarti per ottenere poi un resto.
Ad esempio: 102.56 / 25.2 = 4.069841270
Se ti vuoi fermare a 102.56 / 25.2 = 4 con resto r

double x = a / b;
double r = (x - (long)x) * b;

cionci
29-04-2010, 07:50
In teoria quello che ho scritto sotto dovrebbe comportare lo switching fra modalità floating point e modalità intera della CPU. Se dovessi scriverlo solo per l'unità floating point (sperando che modf inserisca codice inline ottimizzato e non generi una chiamata a funzione):

double f, q;
f = modf(a / b, &q);
double r = f * b;

Rizzolo
29-04-2010, 09:58
Grazie per la risposta!
Speravo ci fosse una funzione tipo rem di matlab, peccato; ho optato per la tua soluzione grazie mille :D