<p>This code works (C# 3)</p>

<pre><code>double d;
if(d == (double)(int)d) ...;
</code></pre>

<ol>
<li>Is there a better way to do this?</li>
<li>For extraneous reasons I want to avoid the double cast so; what nice ways exist other than this? (even if they aren't as good)</li>
</ol>

<p><em>Note:</em> Several people pointed out the (important) point that == is often problematic regrading floating point. In this cases I expect values in the range of 0 to a few hundred and they are supposed to be integers (non ints are errors) so if those points "shouldn't" be an issue for me.</p>

You don't need the extra (double) in there. This works:
```
```
if (d == (int)d) {
 //...
}
```
```