Er meint wahrscheinlich, dass bestimmte reelle Zahlen nicht exakt als Gleitkommazahlen dargestellt werden können. Das ist aber völlig irrelevant für seine Anwendung.
Hier nochmal der Beweis:
Code:
#include <cstdio>
int main(int argc, char* argv[])
{
FILE* f = fopen("output.txt", "w");
for (int n1 = 0; n1 < 256; ++n1) {
float n2 = (float)n1 / 255;
int n3 = (int)(n2 * 255);
fprintf(f, "%3d -> %.6f -> %3d: %s\n", n1, n2, n3, (n3 == n1 ? "OK!" : "ERROR!"));
}
fclose(f);
return 0;
}
Ausgabe:
Code:
0 -> 0.000000 -> 0: OK!
1 -> 0.003922 -> 1: OK!
2 -> 0.007843 -> 2: OK!
3 -> 0.011765 -> 3: OK!
4 -> 0.015686 -> 4: OK!
5 -> 0.019608 -> 5: OK!
6 -> 0.023529 -> 6: OK!
7 -> 0.027451 -> 7: OK!
8 -> 0.031373 -> 8: OK!
9 -> 0.035294 -> 9: OK!
10 -> 0.039216 -> 10: OK!
11 -> 0.043137 -> 11: OK!
12 -> 0.047059 -> 12: OK!
13 -> 0.050980 -> 13: OK!
14 -> 0.054902 -> 14: OK!
15 -> 0.058824 -> 15: OK!
16 -> 0.062745 -> 16: OK!
17 -> 0.066667 -> 17: OK!
18 -> 0.070588 -> 18: OK!
19 -> 0.074510 -> 19: OK!
20 -> 0.078431 -> 20: OK!
21 -> 0.082353 -> 21: OK!
22 -> 0.086275 -> 22: OK!
23 -> 0.090196 -> 23: OK!
24 -> 0.094118 -> 24: OK!
25 -> 0.098039 -> 25: OK!
26 -> 0.101961 -> 26: OK!
27 -> 0.105882 -> 27: OK!
28 -> 0.109804 -> 28: OK!
29 -> 0.113725 -> 29: OK!
30 -> 0.117647 -> 30: OK!
31 -> 0.121569 -> 31: OK!
32 -> 0.125490 -> 32: OK!
33 -> 0.129412 -> 33: OK!
34 -> 0.133333 -> 34: OK!
35 -> 0.137255 -> 35: OK!
36 -> 0.141176 -> 36: OK!
37 -> 0.145098 -> 37: OK!
38 -> 0.149020 -> 38: OK!
39 -> 0.152941 -> 39: OK!
40 -> 0.156863 -> 40: OK!
41 -> 0.160784 -> 41: OK!
42 -> 0.164706 -> 42: OK!
43 -> 0.168627 -> 43: OK!
44 -> 0.172549 -> 44: OK!
45 -> 0.176471 -> 45: OK!
46 -> 0.180392 -> 46: OK!
47 -> 0.184314 -> 47: OK!
48 -> 0.188235 -> 48: OK!
49 -> 0.192157 -> 49: OK!
50 -> 0.196078 -> 50: OK!
51 -> 0.200000 -> 51: OK!
52 -> 0.203922 -> 52: OK!
53 -> 0.207843 -> 53: OK!
54 -> 0.211765 -> 54: OK!
55 -> 0.215686 -> 55: OK!
56 -> 0.219608 -> 56: OK!
57 -> 0.223529 -> 57: OK!
58 -> 0.227451 -> 58: OK!
59 -> 0.231373 -> 59: OK!
60 -> 0.235294 -> 60: OK!
61 -> 0.239216 -> 61: OK!
62 -> 0.243137 -> 62: OK!
63 -> 0.247059 -> 63: OK!
64 -> 0.250980 -> 64: OK!
65 -> 0.254902 -> 65: OK!
66 -> 0.258824 -> 66: OK!
67 -> 0.262745 -> 67: OK!
68 -> 0.266667 -> 68: OK!
69 -> 0.270588 -> 69: OK!
70 -> 0.274510 -> 70: OK!
71 -> 0.278431 -> 71: OK!
72 -> 0.282353 -> 72: OK!
73 -> 0.286275 -> 73: OK!
74 -> 0.290196 -> 74: OK!
75 -> 0.294118 -> 75: OK!
76 -> 0.298039 -> 76: OK!
77 -> 0.301961 -> 77: OK!
78 -> 0.305882 -> 78: OK!
79 -> 0.309804 -> 79: OK!
80 -> 0.313726 -> 80: OK!
81 -> 0.317647 -> 81: OK!
82 -> 0.321569 -> 82: OK!
83 -> 0.325490 -> 83: OK!
84 -> 0.329412 -> 84: OK!
85 -> 0.333333 -> 85: OK!
86 -> 0.337255 -> 86: OK!
87 -> 0.341176 -> 87: OK!
88 -> 0.345098 -> 88: OK!
89 -> 0.349020 -> 89: OK!
90 -> 0.352941 -> 90: OK!
91 -> 0.356863 -> 91: OK!
92 -> 0.360784 -> 92: OK!
93 -> 0.364706 -> 93: OK!
94 -> 0.368627 -> 94: OK!
95 -> 0.372549 -> 95: OK!
96 -> 0.376471 -> 96: OK!
97 -> 0.380392 -> 97: OK!
98 -> 0.384314 -> 98: OK!
99 -> 0.388235 -> 99: OK!
100 -> 0.392157 -> 100: OK!
101 -> 0.396078 -> 101: OK!
102 -> 0.400000 -> 102: OK!
103 -> 0.403922 -> 103: OK!
104 -> 0.407843 -> 104: OK!
105 -> 0.411765 -> 105: OK!
106 -> 0.415686 -> 106: OK!
107 -> 0.419608 -> 107: OK!
108 -> 0.423529 -> 108: OK!
109 -> 0.427451 -> 109: OK!
110 -> 0.431373 -> 110: OK!
111 -> 0.435294 -> 111: OK!
112 -> 0.439216 -> 112: OK!
113 -> 0.443137 -> 113: OK!
114 -> 0.447059 -> 114: OK!
115 -> 0.450980 -> 115: OK!
116 -> 0.454902 -> 116: OK!
117 -> 0.458824 -> 117: OK!
118 -> 0.462745 -> 118: OK!
119 -> 0.466667 -> 119: OK!
120 -> 0.470588 -> 120: OK!
121 -> 0.474510 -> 121: OK!
122 -> 0.478431 -> 122: OK!
123 -> 0.482353 -> 123: OK!
124 -> 0.486275 -> 124: OK!
125 -> 0.490196 -> 125: OK!
126 -> 0.494118 -> 126: OK!
127 -> 0.498039 -> 127: OK!
128 -> 0.501961 -> 128: OK!
129 -> 0.505882 -> 129: OK!
130 -> 0.509804 -> 130: OK!
131 -> 0.513726 -> 131: OK!
132 -> 0.517647 -> 132: OK!
133 -> 0.521569 -> 133: OK!
134 -> 0.525490 -> 134: OK!
135 -> 0.529412 -> 135: OK!
136 -> 0.533333 -> 136: OK!
137 -> 0.537255 -> 137: OK!
138 -> 0.541176 -> 138: OK!
139 -> 0.545098 -> 139: OK!
140 -> 0.549020 -> 140: OK!
141 -> 0.552941 -> 141: OK!
142 -> 0.556863 -> 142: OK!
143 -> 0.560784 -> 143: OK!
144 -> 0.564706 -> 144: OK!
145 -> 0.568627 -> 145: OK!
146 -> 0.572549 -> 146: OK!
147 -> 0.576471 -> 147: OK!
148 -> 0.580392 -> 148: OK!
149 -> 0.584314 -> 149: OK!
150 -> 0.588235 -> 150: OK!
151 -> 0.592157 -> 151: OK!
152 -> 0.596078 -> 152: OK!
153 -> 0.600000 -> 153: OK!
154 -> 0.603922 -> 154: OK!
155 -> 0.607843 -> 155: OK!
156 -> 0.611765 -> 156: OK!
157 -> 0.615686 -> 157: OK!
158 -> 0.619608 -> 158: OK!
159 -> 0.623529 -> 159: OK!
160 -> 0.627451 -> 160: OK!
161 -> 0.631373 -> 161: OK!
162 -> 0.635294 -> 162: OK!
163 -> 0.639216 -> 163: OK!
164 -> 0.643137 -> 164: OK!
165 -> 0.647059 -> 165: OK!
166 -> 0.650980 -> 166: OK!
167 -> 0.654902 -> 167: OK!
168 -> 0.658824 -> 168: OK!
169 -> 0.662745 -> 169: OK!
170 -> 0.666667 -> 170: OK!
171 -> 0.670588 -> 171: OK!
172 -> 0.674510 -> 172: OK!
173 -> 0.678431 -> 173: OK!
174 -> 0.682353 -> 174: OK!
175 -> 0.686275 -> 175: OK!
176 -> 0.690196 -> 176: OK!
177 -> 0.694118 -> 177: OK!
178 -> 0.698039 -> 178: OK!
179 -> 0.701961 -> 179: OK!
180 -> 0.705882 -> 180: OK!
181 -> 0.709804 -> 181: OK!
182 -> 0.713726 -> 182: OK!
183 -> 0.717647 -> 183: OK!
184 -> 0.721569 -> 184: OK!
185 -> 0.725490 -> 185: OK!
186 -> 0.729412 -> 186: OK!
187 -> 0.733333 -> 187: OK!
188 -> 0.737255 -> 188: OK!
189 -> 0.741176 -> 189: OK!
190 -> 0.745098 -> 190: OK!
191 -> 0.749020 -> 191: OK!
192 -> 0.752941 -> 192: OK!
193 -> 0.756863 -> 193: OK!
194 -> 0.760784 -> 194: OK!
195 -> 0.764706 -> 195: OK!
196 -> 0.768627 -> 196: OK!
197 -> 0.772549 -> 197: OK!
198 -> 0.776471 -> 198: OK!
199 -> 0.780392 -> 199: OK!
200 -> 0.784314 -> 200: OK!
201 -> 0.788235 -> 201: OK!
202 -> 0.792157 -> 202: OK!
203 -> 0.796078 -> 203: OK!
204 -> 0.800000 -> 204: OK!
205 -> 0.803922 -> 205: OK!
206 -> 0.807843 -> 206: OK!
207 -> 0.811765 -> 207: OK!
208 -> 0.815686 -> 208: OK!
209 -> 0.819608 -> 209: OK!
210 -> 0.823529 -> 210: OK!
211 -> 0.827451 -> 211: OK!
212 -> 0.831373 -> 212: OK!
213 -> 0.835294 -> 213: OK!
214 -> 0.839216 -> 214: OK!
215 -> 0.843137 -> 215: OK!
216 -> 0.847059 -> 216: OK!
217 -> 0.850980 -> 217: OK!
218 -> 0.854902 -> 218: OK!
219 -> 0.858824 -> 219: OK!
220 -> 0.862745 -> 220: OK!
221 -> 0.866667 -> 221: OK!
222 -> 0.870588 -> 222: OK!
223 -> 0.874510 -> 223: OK!
224 -> 0.878431 -> 224: OK!
225 -> 0.882353 -> 225: OK!
226 -> 0.886275 -> 226: OK!
227 -> 0.890196 -> 227: OK!
228 -> 0.894118 -> 228: OK!
229 -> 0.898039 -> 229: OK!
230 -> 0.901961 -> 230: OK!
231 -> 0.905882 -> 231: OK!
232 -> 0.909804 -> 232: OK!
233 -> 0.913725 -> 233: OK!
234 -> 0.917647 -> 234: OK!
235 -> 0.921569 -> 235: OK!
236 -> 0.925490 -> 236: OK!
237 -> 0.929412 -> 237: OK!
238 -> 0.933333 -> 238: OK!
239 -> 0.937255 -> 239: OK!
240 -> 0.941176 -> 240: OK!
241 -> 0.945098 -> 241: OK!
242 -> 0.949020 -> 242: OK!
243 -> 0.952941 -> 243: OK!
244 -> 0.956863 -> 244: OK!
245 -> 0.960784 -> 245: OK!
246 -> 0.964706 -> 246: OK!
247 -> 0.968627 -> 247: OK!
248 -> 0.972549 -> 248: OK!
249 -> 0.976471 -> 249: OK!
250 -> 0.980392 -> 250: OK!
251 -> 0.984314 -> 251: OK!
252 -> 0.988235 -> 252: OK!
253 -> 0.992157 -> 253: OK!
254 -> 0.996078 -> 254: OK!
255 -> 1.000000 -> 255: OK!