stefan-tiger
01-10-2003, 18:58
hallo,
ich lass per c++ eine float zahl um 0,01 in einer schleife hochzählen.
nach einer weile wird aus a,a1 a,aa999999. warum?
folgender code:
main.cpp
#include <iostream>
int main(void)
{
std::cout << "Mein Programm" << std::endl;
float x;
float y;
x = 0.00;
do
{
y=2*x-3;
std::cout << "x=" << x << " y=" << y << std::endl;
x=x+0.01;
}
while(x < 1.00);
};
ergibt folgende ausgabe:
bash-2.05b$ g++ -o run.bin main.cpp && ./run.bin
Mein Programm
x=0 y=-3
x=0.01 y=-2.98
x=0.02 y=-2.96
x=0.03 y=-2.94
x=0.04 y=-2.92
x=0.05 y=-2.9
x=0.06 y=-2.88
x=0.07 y=-2.86
x=0.08 y=-2.84
x=0.09 y=-2.82
x=0.1 y=-2.8
x=0.11 y=-2.78
x=0.12 y=-2.76
x=0.13 y=-2.74
x=0.14 y=-2.72
x=0.15 y=-2.7
x=0.16 y=-2.68
x=0.17 y=-2.66
x=0.18 y=-2.64
x=0.19 y=-2.62
x=0.2 y=-2.6
x=0.21 y=-2.58
x=0.22 y=-2.56
x=0.23 y=-2.54
x=0.24 y=-2.52
x=0.25 y=-2.5
x=0.26 y=-2.48
x=0.27 y=-2.46
x=0.28 y=-2.44
x=0.29 y=-2.42
x=0.3 y=-2.4
x=0.31 y=-2.38
x=0.32 y=-2.36
x=0.33 y=-2.34
x=0.34 y=-2.32
x=0.35 y=-2.3
x=0.36 y=-2.28
x=0.37 y=-2.26
x=0.38 y=-2.24
x=0.39 y=-2.22
x=0.4 y=-2.2
x=0.41 y=-2.18
x=0.42 y=-2.16
x=0.43 y=-2.14
x=0.44 y=-2.12
x=0.45 y=-2.1
x=0.46 y=-2.08
x=0.47 y=-2.06
x=0.48 y=-2.04
x=0.49 y=-2.02
x=0.5 y=-2
x=0.51 y=-1.98
x=0.52 y=-1.96
x=0.53 y=-1.94
x=0.54 y=-1.92
x=0.55 y=-1.9
x=0.56 y=-1.88
x=0.57 y=-1.86
x=0.58 y=-1.84
x=0.59 y=-1.82
x=0.6 y=-1.8
x=0.61 y=-1.78
x=0.62 y=-1.76
x=0.63 y=-1.74
x=0.64 y=-1.72
x=0.65 y=-1.7
x=0.66 y=-1.68
x=0.67 y=-1.66
x=0.68 y=-1.64
x=0.69 y=-1.62
x=0.7 y=-1.6
x=0.71 y=-1.58
x=0.72 y=-1.56
x=0.73 y=-1.54
x=0.74 y=-1.52
x=0.75 y=-1.5
x=0.76 y=-1.48
x=0.77 y=-1.46
x=0.78 y=-1.44
x=0.79 y=-1.42
x=0.8 y=-1.4
x=0.81 y=-1.38
x=0.82 y=-1.36
x=0.83 y=-1.34
x=0.839999 y=-1.32
x=0.849999 y=-1.3
x=0.859999 y=-1.28
x=0.869999 y=-1.26
x=0.879999 y=-1.24
x=0.889999 y=-1.22
x=0.899999 y=-1.2
x=0.909999 y=-1.18
x=0.919999 y=-1.16
x=0.929999 y=-1.14
x=0.939999 y=-1.12
x=0.949999 y=-1.1
x=0.959999 y=-1.08
x=0.969999 y=-1.06
x=0.979999 y=-1.04
x=0.989999 y=-1.02
x=0.999999 y=-1
ich lass per c++ eine float zahl um 0,01 in einer schleife hochzählen.
nach einer weile wird aus a,a1 a,aa999999. warum?
folgender code:
main.cpp
#include <iostream>
int main(void)
{
std::cout << "Mein Programm" << std::endl;
float x;
float y;
x = 0.00;
do
{
y=2*x-3;
std::cout << "x=" << x << " y=" << y << std::endl;
x=x+0.01;
}
while(x < 1.00);
};
ergibt folgende ausgabe:
bash-2.05b$ g++ -o run.bin main.cpp && ./run.bin
Mein Programm
x=0 y=-3
x=0.01 y=-2.98
x=0.02 y=-2.96
x=0.03 y=-2.94
x=0.04 y=-2.92
x=0.05 y=-2.9
x=0.06 y=-2.88
x=0.07 y=-2.86
x=0.08 y=-2.84
x=0.09 y=-2.82
x=0.1 y=-2.8
x=0.11 y=-2.78
x=0.12 y=-2.76
x=0.13 y=-2.74
x=0.14 y=-2.72
x=0.15 y=-2.7
x=0.16 y=-2.68
x=0.17 y=-2.66
x=0.18 y=-2.64
x=0.19 y=-2.62
x=0.2 y=-2.6
x=0.21 y=-2.58
x=0.22 y=-2.56
x=0.23 y=-2.54
x=0.24 y=-2.52
x=0.25 y=-2.5
x=0.26 y=-2.48
x=0.27 y=-2.46
x=0.28 y=-2.44
x=0.29 y=-2.42
x=0.3 y=-2.4
x=0.31 y=-2.38
x=0.32 y=-2.36
x=0.33 y=-2.34
x=0.34 y=-2.32
x=0.35 y=-2.3
x=0.36 y=-2.28
x=0.37 y=-2.26
x=0.38 y=-2.24
x=0.39 y=-2.22
x=0.4 y=-2.2
x=0.41 y=-2.18
x=0.42 y=-2.16
x=0.43 y=-2.14
x=0.44 y=-2.12
x=0.45 y=-2.1
x=0.46 y=-2.08
x=0.47 y=-2.06
x=0.48 y=-2.04
x=0.49 y=-2.02
x=0.5 y=-2
x=0.51 y=-1.98
x=0.52 y=-1.96
x=0.53 y=-1.94
x=0.54 y=-1.92
x=0.55 y=-1.9
x=0.56 y=-1.88
x=0.57 y=-1.86
x=0.58 y=-1.84
x=0.59 y=-1.82
x=0.6 y=-1.8
x=0.61 y=-1.78
x=0.62 y=-1.76
x=0.63 y=-1.74
x=0.64 y=-1.72
x=0.65 y=-1.7
x=0.66 y=-1.68
x=0.67 y=-1.66
x=0.68 y=-1.64
x=0.69 y=-1.62
x=0.7 y=-1.6
x=0.71 y=-1.58
x=0.72 y=-1.56
x=0.73 y=-1.54
x=0.74 y=-1.52
x=0.75 y=-1.5
x=0.76 y=-1.48
x=0.77 y=-1.46
x=0.78 y=-1.44
x=0.79 y=-1.42
x=0.8 y=-1.4
x=0.81 y=-1.38
x=0.82 y=-1.36
x=0.83 y=-1.34
x=0.839999 y=-1.32
x=0.849999 y=-1.3
x=0.859999 y=-1.28
x=0.869999 y=-1.26
x=0.879999 y=-1.24
x=0.889999 y=-1.22
x=0.899999 y=-1.2
x=0.909999 y=-1.18
x=0.919999 y=-1.16
x=0.929999 y=-1.14
x=0.939999 y=-1.12
x=0.949999 y=-1.1
x=0.959999 y=-1.08
x=0.969999 y=-1.06
x=0.979999 y=-1.04
x=0.989999 y=-1.02
x=0.999999 y=-1