Not. Here's how doubles work ... try using decimal substitution
int xd2 = 5; for (decimal xd = (decimal)xd2; xd <= 6; xd += 0.01M) { Console.WriteLine(xd); }
if you want to stick to doubles, but use only two decimal places ...
int xd2 = 5; for (double xd = (double)xd2; xd <= 6; xd += 0.01) { Console.WriteLine(Math.Round(xd,2)); }
source share