>> DAVID MALAN: Lassen Sie uns jetzt Ihre Meinung zu blasen.
Es stellt sich in der realen Welt 1 dividiert 10 ist tatsächlich 1/10 oder 0,1.
Aber in Computern, die nur eine endliche Anzahl der Bits, mit denen
Zahlen darstellen, kann man nicht immer Zahlen darstellen, wie 1/10 mit
perfekte Präzision.
In anderen Worten, manchmal Computern Urteil zu telefonieren und nicht zu machen
unbedingt die Nummer, die Sie wollen so genau wie Sie wollen.
>> Angenommen, ich gehe zurück in dieses Programm und ändern Sie die 0,1,
oh, 0,28, was zeigt, dass Ich möchte zu printf printf
28 Stellen Genauigkeit.
Lassen Sie uns nun speichern und übersetzen Sie das Programm, dieses Mal mit Make floats2.
Führen Sie es mit Punkt Strich floats2.
Und, lieber Gott, dieses Mal sehe ich nicht 0,1, aber 0.10000000, die hübsch ist
gut so weit.
Aber dann 14901161193847656250.
>> Nun, was ist los?
Nun stellt sich heraus, dass ein Schwimmer typischerweise innerhalb eines Computers gespeichert
mit 32 Bit.
32 ist natürlich eine endliche Zahl, die bedeutet, dass Sie nur darstellen kann
mit 32 Bit eine endliche Anzahl Gleitkomma-Werte.
Unglücklicherweise bedeutet das, dass die Computer kann nicht alle möglichen darstellen
Fließkommazahlen oder reelle Zahlen, , die in der Welt existieren,
da er nur so viele Bits.
>> Und so ist, was der Computer offenbar in diesem Fall geschieht repräsentieren 1/10 bis
möglichst enge Fließ Punktwert, dass dies möglich ist.
Aber wenn wir uns, wie wir hier zu haben, bis 28 Dezimalstellen, beginnen wir zu sehen, dass
Ungenauigkeit.
Also das ist ein Problem mit keine perfekte Lösung.
Wir können eine Doppel statt einem Schwimmer zu verwenden, die auf 64 Bit als verwenden neigt
auf 32 gegenüber.
Aber natürlich ist auch endlich 64, so dass das Problem wird
bleiben, auch mit Doppelzimmer.