For-Schleife in C ++ mit Double Breakout einen Schritt früher, Grenzwert nicht erreicht

Ich habe ein einfaches C ++ - Programm mit gcc 4.2.4 auf 32-Bit-Ubuntu 8.04 kompiliert. Es hat einfor-schleife in der adouble Die Variable wird mit einer bestimmten Schrittgröße von null auf eins erhöht. Wenn die Schrittgröße ist0.1ist das Verhalten, was ich erwartet hatte. Wenn die Schrittweite jedoch '0.05' ist, wird die Schleife nach beendet0.95. Kann mir jemand sagen, warum das passiert? Die Ausgabe folgt dem unten stehenden Quellcode.

#include <iostream>

using namespace std;

int main()
{
    double rangeMin = 0.0;
    double rangeMax = 1.0;
    double stepSize = 0.1;

    for (double index = rangeMin; index <= rangeMax; index+= stepSize)
    {
        cout << index << endl;
    }
    cout << endl; 

    stepSize = 0.05;
    for (double index = rangeMin; index <= rangeMax; index+= stepSize)
    {
        cout << index << endl;
    }

    return 0;
}

AUSGABE

sarva@savija-dev:~/code/scratch$ ./a.out 
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1

0
0.05
0.1
0.15
0.2
0.25
0.3
0.35
0.4
0.45
0.5
0.55
0.6
0.65
0.7
0.75
0.8
0.85
0.9
0.95
sarva@savija-dev:~/code/scratch$

Antworten auf die Frage(10)

Ihre Antwort auf die Frage