title: .NET bug when converting float to integer?
body: <p>Check it out: this little .NET Console Program yields interesting results...notice how I'm converting a float to an integer in two different ways:</p>
  
  <pre><code>using System;
  using System.Collections.Generic;
  using System.Linq;
  using System.Text;
  
  namespace CastVsConvert
  {
      class Program
      {
          static void Main(string[] args)
          {
              int newWidth = 0;
              CalculateResizeSizes(600, 500, out newWidth);
          }
  
          static void CalculateResizeSizes(int originalWidth, int maxWidth, out int newWidth)
          {
              float percentage = 1.0F;
              percentage = maxWidth / (float)originalWidth;
  
              newWidth = (int)((float)originalWidth * percentage);
              int newWidthConvert = Convert.ToInt32((float)originalWidth * percentage);
  
              Console.Write("Percentage: {0}\n", percentage.ToString());
              Console.Write("Cast: {0}\n", newWidth.ToString());
              Console.Write("Convert: {0}\n", newWidthConvert.ToString());
          }
      }
  }
  </code></pre>
  
  <p>I would expect the output for "Cast" and "Convert" to be the same, but they're not...here's the output:</p>
  
  <pre><code>C:\Documents and Settings\Scott\My Documents\Visual Studio 2008\Projects\CastVsC
  onvert\CastVsConvert\bin\Debug&gt;CastVsConvert.exe
  Percentage: 0.8333333
  Cast: 499
  Convert: 500
  </code></pre>
  
  <p>Does anybody know why .NET is returning different values here?  </p>