1 00:00:00,000 --> 00:00:00,310 2 00:00:00,310 --> 00:00:01,750 >> DAVID MALAN: indi sizin fikrinizi əsəcək edək. 3 00:00:01,750 --> 00:00:06,500 Bu bölünür real dünyada 1 çıxır 10 1/10 və ya 0,1 həqiqətən. 4 00:00:06,500 --> 00:00:10,370 Lakin kompüter yalnız məhdud var ki, bit sayı ilə 5 00:00:10,370 --> 00:00:14,290 nömrələri təmsil, siz həmişə bilməz 1/10 kimi nömrələri təmsil 6 00:00:14,290 --> 00:00:15,500 mükəmməl dəqiq. 7 00:00:15,500 --> 00:00:18,640 Başqa sözlə, kompüter bəzən qərar zənglər və etmək 8 00:00:18,640 --> 00:00:22,740 mütləq sayı təmsil kimi dəqiq niyyətində kimi istəyirəm. 9 00:00:22,740 --> 00:00:27,020 >> Məsələn, mən geri getmək Güman Bu proqram və 0.1 dəyişdirmək, 10 00:00:27,020 --> 00:00:32,073 oh, 0.28, bununla ifadə edən Mən printf printf istəyirəm 11 00:00:32,073 --> 00:00:34,350 Dəqiq 28 yerləri. 12 00:00:34,350 --> 00:00:39,330 İndi saxlamaq və proqram tərtib edək, etmək floats2 ilə bu dəfə. 13 00:00:39,330 --> 00:00:41,910 Dot çizgi floats2 ilə Run. 14 00:00:41,910 --> 00:00:49,980 Və əziz Allah, mən 0.1 görmürəm bu dəfə, lakin olduqca olan 0.10000000, 15 00:00:49,980 --> 00:00:51,070 Bu günə qədər yaxşı. 16 00:00:51,070 --> 00:00:57,830 Amma sonra, 14901161193847656250. 17 00:00:57,830 --> 00:00:58,880 >> Yaxşı, nə olub? 18 00:00:58,880 --> 00:01:02,280 Bəli, bu bir float çıxır ki adətən kompüter daxilində saxlanılır 19 00:01:02,280 --> 00:01:03,500 32 bit ilə. 20 00:01:03,500 --> 00:01:07,340 32 açıq-aydın bir sonlu sayı, olan yalnız təmsil edə bilər ki, nəzərdə tutur 21 00:01:07,340 --> 00:01:11,050 32 bit məhdud sayda ilə point dəyərləri üzən. 22 00:01:11,050 --> 00:01:14,980 Təəssüf ki, o deməkdir ki, kompüter bütün mümkün təmsil edə bilməz 23 00:01:14,980 --> 00:01:18,110 üzən point nömrələri, və ya real nömrələri, dünyada mövcud ki, 24 00:01:18,110 --> 00:01:19,980 yalnız çox bit var. 25 00:01:19,980 --> 00:01:23,940 >> Və belə ki, kompüter yəqin nə var Bu halda görülən 1/10 təqdim edir 26 00:01:23,940 --> 00:01:26,880 ən yaxın üzən point dəyər ola bilər ki,. 27 00:01:26,880 --> 00:01:31,050 Amma biz baxsaq, biz burada var, 28 decimal yerləri, biz görmək başlamaq 28 00:01:31,050 --> 00:01:31,970 qeyri-dəqiqlik. 29 00:01:31,970 --> 00:01:34,480 Belə ki, bu bir problem deyil Heç bir mükəmməl həll. 30 00:01:34,480 --> 00:01:38,060 Biz əvəzinə bir float ikiqat istifadə edə bilərsiniz 64 bit istifadə etmək niyyətindədir 31 00:01:38,060 --> 00:01:39,410 32 fərqli. 32 00:01:39,410 --> 00:01:42,290 Amma əlbəttə, 64, həmçinin sonlu belə problem olacaq 33 00:01:42,290 --> 00:01:43,630 hətta dubl qalır. 34 00:01:43,630 --> 00:01:46,323