How can I check whether a double has a fractional part?

You can use modf, this should be sufficient:

 double intpart;

 if( modf( halfWidth, &intpart) == 0 )
 {
 // your code here
 }

First, you need to make sure that you're using double-precision floating-point math:

double halfWidth = Width / 2.0;
double halfHeight = Height / 2.0;

Because one of the operands is a double (namely, 2.0), this will force the compiler to convert Width and Height to doubles before doing the math (assuming they're not already doubles). Once converted, the division will be done in double-precision floating-point. So it will have a decimal, where appropriate.

The next step is to simply check it with modf.

double temp;
if(modf(halfWidth, &temp) != 0)
{
  //Has fractional part.
}
else
{
  //No fractional part.
}

Tags:

C++