1 00:00:00,000 --> 00:00:00,310 2 00:00:00,310 --> 00:00:01,750 >> DAVID MALAN: Lassen Sie uns jetzt Ihre Meinung zu blasen. 3 00:00:01,750 --> 00:00:06,500 Es stellt sich in der realen Welt 1 dividiert 10 ist tatsächlich 1/10 oder 0,1. 4 00:00:06,500 --> 00:00:10,370 Aber in Computern, die nur eine endliche Anzahl der Bits, mit denen 5 00:00:10,370 --> 00:00:14,290 Zahlen darstellen, kann man nicht immer Zahlen darstellen, wie 1/10 mit 6 00:00:14,290 --> 00:00:15,500 perfekte Präzision. 7 00:00:15,500 --> 00:00:18,640 In anderen Worten, manchmal Computern Urteil zu telefonieren und nicht zu machen 8 00:00:18,640 --> 00:00:22,740 unbedingt die Nummer, die Sie wollen so genau wie Sie wollen. 9 00:00:22,740 --> 00:00:27,020 >> Angenommen, ich gehe zurück in dieses Programm und ändern Sie die 0,1, 10 00:00:27,020 --> 00:00:32,073 oh, 0,28, was zeigt, dass Ich möchte zu printf printf 11 00:00:32,073 --> 00:00:34,350 28 Stellen Genauigkeit. 12 00:00:34,350 --> 00:00:39,330 Lassen Sie uns nun speichern und übersetzen Sie das Programm, dieses Mal mit Make floats2. 13 00:00:39,330 --> 00:00:41,910 Führen Sie es mit Punkt Strich floats2. 14 00:00:41,910 --> 00:00:49,980 Und, lieber Gott, dieses Mal sehe ich nicht 0,1, aber 0.10000000, die hübsch ist 15 00:00:49,980 --> 00:00:51,070 gut so weit. 16 00:00:51,070 --> 00:00:57,830 Aber dann 14901161193847656250. 17 00:00:57,830 --> 00:00:58,880 >> Nun, was ist los? 18 00:00:58,880 --> 00:01:02,280 Nun stellt sich heraus, dass ein Schwimmer typischerweise innerhalb eines Computers gespeichert 19 00:01:02,280 --> 00:01:03,500 mit 32 Bit. 20 00:01:03,500 --> 00:01:07,340 32 ist natürlich eine endliche Zahl, die bedeutet, dass Sie nur darstellen kann 21 00:01:07,340 --> 00:01:11,050 mit 32 Bit eine endliche Anzahl Gleitkomma-Werte. 22 00:01:11,050 --> 00:01:14,980 Unglücklicherweise bedeutet das, dass die Computer kann nicht alle möglichen darstellen 23 00:01:14,980 --> 00:01:18,110 Fließkommazahlen oder reelle Zahlen, , die in der Welt existieren, 24 00:01:18,110 --> 00:01:19,980 da er nur so viele Bits. 25 00:01:19,980 --> 00:01:23,940 >> Und so ist, was der Computer offenbar in diesem Fall geschieht repräsentieren 1/10 bis 26 00:01:23,940 --> 00:01:26,880 möglichst enge Fließ Punktwert, dass dies möglich ist. 27 00:01:26,880 --> 00:01:31,050 Aber wenn wir uns, wie wir hier zu haben, bis 28 Dezimalstellen, beginnen wir zu sehen, dass 28 00:01:31,050 --> 00:01:31,970 Ungenauigkeit. 29 00:01:31,970 --> 00:01:34,480 Also das ist ein Problem mit keine perfekte Lösung. 30 00:01:34,480 --> 00:01:38,060 Wir können eine Doppel statt einem Schwimmer zu verwenden, die auf 64 Bit als verwenden neigt 31 00:01:38,060 --> 00:01:39,410 auf 32 gegenüber. 32 00:01:39,410 --> 00:01:42,290 Aber natürlich ist auch endlich 64, so dass das Problem wird 33 00:01:42,290 --> 00:01:43,630 bleiben, auch mit Doppelzimmer. 34 00:01:43,630 --> 00:01:46,323