1 00:00:00,000 --> 00:00:00,310 2 00:00:00,310 --> 00:00:01,750 >> DAVID Malan: Нека сега ви оставят без дъх. 3 00:00:01,750 --> 00:00:06,500 Оказва се, в реалния свят, една разделена от 10 е наистина 1/10, или 0.1. 4 00:00:06,500 --> 00:00:10,370 Но в областта на компютрите, които имат само ограничен брой битове с което 5 00:00:10,370 --> 00:00:14,290 представляват числа, вие не винаги може представляват числа като 1/10 с 6 00:00:14,290 --> 00:00:15,500 перфектна точност. 7 00:00:15,500 --> 00:00:18,640 С други думи, компютри понякога имат да се направи преценка, разговори и не 8 00:00:18,640 --> 00:00:22,740 задължително да представляват номера, който Искам най-точно имате намерение. 9 00:00:22,740 --> 00:00:27,020 >> Например да предположим, че се връщам в тази програма и промяна на 0.1 до 10 00:00:27,020 --> 00:00:32,073 о, 0.28, като по този начин показва, че Бих искал да ФОРМАТ ФОРМАТ да 11 00:00:32,073 --> 00:00:34,350 28 места на прецизност. 12 00:00:34,350 --> 00:00:39,330 Нека сега спаси и съставяне на програмата, този път с марка floats2. 13 00:00:39,330 --> 00:00:41,910 Пусни го с точка наклонена черта floats2. 14 00:00:41,910 --> 00:00:49,980 И, мили Боже, този път аз не виждам 0.1, но 0.10000000, което е доста 15 00:00:49,980 --> 00:00:51,070 добре досега. 16 00:00:51,070 --> 00:00:57,830 Но след това, 14901161193847656250. 17 00:00:57,830 --> 00:00:58,880 >> Е, какво става? 18 00:00:58,880 --> 00:01:02,280 Е, оказва се, че флоат е обикновено се съхранява вътре в компютър 19 00:01:02,280 --> 00:01:03,500 с 32 бита. 20 00:01:03,500 --> 00:01:07,340 32 е очевидно краен брой, които означава, че можете само да представляват 21 00:01:07,340 --> 00:01:11,050 с 32 бита краен брой на стойности с плаваща запетая. 22 00:01:11,050 --> 00:01:14,980 За съжаление, това означава, че Компютърът не може да представлява всички възможни 23 00:01:14,980 --> 00:01:18,110 числа с плаваща запетая, или реални числа, , които съществуват в света, 24 00:01:18,110 --> 00:01:19,980 защото има само толкова много бита. 25 00:01:19,980 --> 00:01:23,940 >> И така, това, което компютърът е очевидно направено в този случай се представляват 1/10, за да 26 00:01:23,940 --> 00:01:26,880 възможно най-близо плаващ точка стойност, която може. 27 00:01:26,880 --> 00:01:31,050 Но ако погледнем, тъй като ние имаме тук, до 28 знака след десетичната запетая, ние започват да се види, че 28 00:01:31,050 --> 00:01:31,970 неточност. 29 00:01:31,970 --> 00:01:34,480 Така че това е проблем с не идеалното решение. 30 00:01:34,480 --> 00:01:38,060 Ние можем да използваме двойно вместо поплавък, които са склонни да се използва 64 бита като 31 00:01:38,060 --> 00:01:39,410 разлика 32. 32 00:01:39,410 --> 00:01:42,290 Но, разбира се, 64 също е ограничен, така че проблемът ще 33 00:01:42,290 --> 00:01:43,630 остане дори и с двойки. 34 00:01:43,630 --> 00:01:46,323