primo luogo, è necessario assicurarsi che si sta utilizzando in doppia precisione in virgola mobile per la matematica:
double halfWidth = Width/2.0;
double halfHeight = Height/2.0;
Perché uno degli operandi è un doppio (vale a dire, 2.0
), questo costringerà il compilatore a convertire Width
e Height
in doppio prima di eseguire il calcolo matematico (supponendo che non siano già double
s). Una volta convertita, la divisione verrà eseguita in virgola mobile a precisione doppia. Quindi avrà un decimale, se del caso.
Il passaggio successivo è semplicemente controllarlo con modf
.
double temp;
if(modf(halfWidth, &temp) != 0)
{
//Has fractional part.
}
else
{
//No fractional part.
}
fonte
2013-05-14 02:08:57
I valori interi o in virgola mobile "Larghezza" e "Altezza"? A meno che non siano 'float' o' double', otterrai sempre un risultato intero poiché la divisione viene eseguita sulla base dei tipi di 'Width' o' Height' e 2 (tutti un tipo intero sotto questa ipotesi), e il risultato viene quindi convertito in un 'double'. –