Grundlagen der Programmierung (Pseudocode nachverfolgen)
Reelle Werte werden im Format IEEE 754 mit doppelter Genauigkeit (binary64) dargestellt, und jede Summe wird auf den nächstgelegenen darstellbaren Wert gerundet. Welchen Wert hat c, nachdem das folgende Programm ausgeführt wurde?
real: x ← 0.0
integer: c ← 0
while (x < 1.0)
x ← x + 0.1
c ← c + 1
endwhile
- A9
- B10
- C11
Antwort und Erläuterung anzeigen
Antwort: C. 11
0,1 ist im Binärsystem ein periodischer Bruch und wird bei doppelter Genauigkeit als Näherungswert gespeichert, der etwas größer als 0,1 ist. Jede Addition fügt einen Rundungsfehler hinzu, und nach 10 Additionen ergibt sich nicht 1,0, sondern 0,9999999999999999. Dieser Wert ist kleiner als 1,0 und erfüllt die Schleifenbedingung, daher folgt eine 11. Addition; x wird etwa 1,1, und die Schleife endet mit c = 11. Schleifendurchläufe werden mit einer ganzzahligen Variablen gezählt, und reelle Zahlen werden nicht mit = oder ≠ verglichen. Prüft die Bedingung stattdessen mit ≠ auf Ungleichheit mit 1,0, wird x nie genau 1,0, und die Schleife endet nie.
Weiter: 9 weitere Fragen zu Grundlagen der Programmierung (Pseudocode nachverfolgen)