1 00:00:00,000 --> 00:00:00,310 2 00:00:00,310 --> 00:00:01,750 >> Дэвід Малан: Давайце цяпер адразу вас напавал. 3 00:00:01,750 --> 00:00:06,500 Аказваецца, у рэальным свеце 1 падзеленага на самай справе 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, тым самым паказваючы, што Я хацеў бы Printf ў Е да 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