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.