1 00:00:00,000 --> 00:00:00,310 2 00:00:00,310 --> 00:00:01,750 >> DAVID مالان: دعونا الآن ضربة عقلك. 3 00:00:01,750 --> 00:00:06,500 اتضح في العالم الحقيقي 1 تقسيم بنسبة 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، مما يدل على أن أود printf ل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