While I appreciate the sentiment, I am well acquainted with the manner in which floating point numbers are handled. To quote myself, since you quoted only a portion of my statement,
>I am dividing 731961 by 365.25 and the result should be exactly 2004 (no decimal)
Note the "no decimal" part. I wasn't referring to the way in which the computer was handling any truncation. Rather, I was stating that the mathematical statement 731961 / 365.25 is equivalent to 2004 (according to a calculator, iow).
The reason for the different answers between
std::cout << "\n" << x << " / " << (y + .25) << " = " <<
int(x / (y + .25));

and

std::cout << "\n-->" << x << " / " << (y + .25) << " = " <<
int(x / (365 + .25));

is basically the way in which the various parts are promoted.
While at first there seems to be some validity to this idea, in all reality it doesn't make a difference in the end result. I have even declared y as a double, but it yielded the same results. Aside from that, as CodePlug mentioned, in MSVC the results were as they should be. Furthermore, were that the case, the following two lines would also evaluate to different values:
Code:
  std::cout << "\n" << x << " / " << (y + .25) << " = " << 
    int(731961 / (y + .25));  
  std::cout << "\n" << x << " / " << (y + .25) << " = " << 
    int(731961 / (365 + .25));