It would be best to use and update an integer value to control your loop. And a use and update a floating point value to use to output. I'm assuming your real-world case is a little more complex than this.
This will execute the loop the correct number of times and save on int to float conversions. The double value will be accurate so long as you don't loop too many times or let it get too big, then you will start getting rounding errors. In general you can come up with ways to correct for this, but with a loop of size/range it's a non-issue.
double d = 1.0;
for (unsigned i = 0; i <= 10; ++i, d += 0.1)
{
cout << d << endl;
}
If you want to avoid cumulative round-off error from adding 0.1, it can be done like this:
double d = 10.0;
for (unsigned i = 0; i <= 10; ++i, d += 1.0)
{
cout << (d / 10.0) << endl;
}
This is more accurate because small whole numbers can be represented accurately in a floating point format. However it costs a floating point division, but still avoids the int-to-float conversions.