|
double a = 25.34, b = 0.1, c = 0.0, d = 0.0;
for(int i = 0; i < 200; i++) {
c = a - d;
d += b;
Memo1->Lines->Add(c);
}
위 프로그램을 실행시키면 메모장에 25.34 에서 0.1 씩 빼준 값이 나오다가 어느순간부터 값이 이상하네요...
또 double이 아닌 float 로 값을 선언하면 처음부터 0.1 씩 빼준값이 아닌 거의 근사값이 나옵니다.
왜 그런가요...
Memo1
25.34
25.24
25.14
25.04
24.94
24.84
24.74
24.64
24.54
24.44
24.34
24.24
24.14
24.04
23.94
23.84
23.74
23.64
23.54
23.44
23.34
23.24
23.14
23.04
22.94
22.84
22.74
22.64
22.54
22.44
22.34
22.24
22.14
22.04
21.94
21.84
21.74
21.64
21.54
21.44
21.34
21.24
21.14
21.04
20.94
20.84
20.74
20.64
20.54
20.44
20.34
20.24
20.14
20.04
19.94
19.84
19.74
19.64
19.54
19.44
19.34
19.24
19.14
19.04
18.94
18.84
18.74
18.64
18.54
18.44
18.34
18.24
18.14
18.04
17.94
17.84
17.74
17.64
17.54
17.44
17.34
17.24
17.14
17.04
16.94
16.84
16.74
16.64
16.54
16.44
16.34
16.24
16.14
16.04
15.94
15.84
15.74
15.64
15.54
15.44
15.34
15.24
15.14
15.04
14.94
14.84
14.74
14.64
14.54
14.44
14.34
14.24
14.14
14.04
13.94
13.84
13.74
13.64
13.54
13.44
13.34
13.24
13.14
13.04
12.94
12.84
12.74
12.64
12.54
12.44
12.34
12.24
12.14
12.04
11.94
11.84
11.74
11.64
11.54
11.44
11.34
11.24
11.14
11.04
10.94
10.84
10.74
10.64
10.54
10.44
10.34
10.24
10.14
10.04
9.94000000000004
9.84000000000004
9.74000000000004
9.64000000000004
9.54000000000004
9.44000000000004
9.34000000000004
9.24000000000004
9.14000000000004
9.04000000000004
8.94000000000004
8.84000000000004
8.74000000000003
8.64000000000003
8.54000000000003
8.44000000000003
8.34000000000003
8.24000000000003
8.14000000000003
8.04000000000002
7.94000000000002
7.84000000000002
7.74000000000002
7.64000000000002
7.54000000000002
7.44000000000002
7.34000000000001
7.24000000000001
7.14000000000001
7.04000000000001
6.94000000000001
6.84000000000001
6.74000000000001
6.64
6.54
6.44
6.34
6.24
6.14
6.04
5.93999999999999
5.83999999999999
5.73999999999999
5.63999999999999
5.53999999999999
5.43999999999999
|