>> DAVID J. مالان: كما تعلمون، يتم قياس درجات الحرارة باستخدام
مستويات مختلفة في مختلف أنحاء العالم.
على سبيل المثال، 212 درجة فهرنهايت هو من 100 درجة مئوية و 32 درجة
فهرنهايت هو 0 درجة مئوية.
لن يكون ذلك جميلا لو كان لدينا جهاز كمبيوتر البرنامج الذي يسمح لنا ل
تحويل من، مثلا، فهرنهايت إلى درجة مئوية؟
>> كذلك، يمكن أن نكتب هذا البرنامج.
دعونا نبدأ أولا مع cs50.h تشمل، حتى نتمكن من استخدام دالة يسمى
الحصول على تعويم، والتي، مثل الحصول على كثافة العمليات، ويحصل على عدد من المستخدمين، ولكن هذه المرة
رقم النقطة العائمة - واحد مع العلامة العشرية.
>> دعونا تشمل أيضا io.h القياسية حتى نتمكن من الوصول إلى
وظائف مثل الطباعة و.
ودعونا أيضا تعلن الرئيسي بالطريقة المعتادة.
>> دعونا يدفع القادم للمستخدم ل في درجة حرارة فهرنهايت.
دعونا الآن في الواقع الحصول على أن درجة الحرارة من المستخدم، لأول مرة
إعلان متغير يسمى و من نوع عشري.
وتطفو، مرة أخرى، وهذا يعني أن متغير يخزن قيمة النقطة العائمة،
واحد مع العلامة العشرية.
>> دعونا تعيينها عودة قيمة الحصول على تعويم.
ثم دعونا نفعل شيئا من الحساب على ذلك، معلنا أول تعويم أخرى
دعا مئوية لمدة مئوية وتخزينها في C و نتيجة لبعض الحساب المشترك.
5.0 مقسوما على 9.0 مرات F ناقص 32.0.
>> دعونا الآن طباعة نتيجة من هذا الحساب.
في المائة و -
مما يدل على عنصر نائب ل قيمة النقطة العائمة -
فاصلة C لطباعة درجة الحرارة في مئوية.
دعونا حفظ قراري النهائي.
ترجمة مع F لC. تشغيل البرنامج مع نقطة مائلة إلى F C.
>> ودعونا نحاول تلك الشائعة درجات الحرارة.
212 درجة فهرنهايت في 100 درجة مئوية.
32 درجة فهرنهايت في و 0 درجة مئوية في.
>> الآن يتيح تحسين هذا البرنامج قليلا قليلا من خلال عدم الطباعة تماما كما العديد من و0
بعد ذلك منزلة عشرية.
للقيام بذلك، وانا ذاهب ل نعود إلى السطر 11.
وبدلا من مجرد تحديد المئة و، انا ذاهب الى تحديد بدلا من ذلك، مثلا،
0.1 و، إعلام و الطباعة أنني فقط تريد طباعة قيمة النقطة العائمة
لقيمة واحدة بعد منزلة عشرية.
>> دعونا إعادة حفظ برنامجي.
إعادة ترجمة عليه مع جعل F لC. ثم أعد ذلك مع نقطة مائلة إلى F C. و
دعونا إعادة المحاولة مع، مثلا، 212، الذي يعطيني 100.0.
>> الآن حان الجدير بالذكر أن فعلت شيء عمدا جدا في خط 9.
لاحظ كيف كتبت 5 هو 5.0، 9 كما 9.0، وحتى 32 ك 32.0.
كذلك، كان أول اثنين من تلك القيم اختار عمدا جدا أن تكون
قيم النقطة العائمة، ليس فقط ل الاتساق مع بقية
من برنامجي -
الذي ينطوي بوضوح العائمة القيم نقطة -
ولكن لأنه تبين أن C، إذا كنت تقسيم عدد صحيح من قبل الباحث آخر،
مما أدى الإجابة وأنت تسير في الحصول على و حد ذاته كثافة، حتى لو كان ذلك يعني
الحاجة إلى رمي كل شيء بعد العلامة العشرية.
>> وبعبارة أخرى، إذا قمت بتغيير هذا 5.0 ل 5 أو هذا 9،0-9 ثم إعادة حفظ
برنامجي، مع إعادة ترجمة ماركة F إلى C، ومن ثم إعادة تشغيل مع مائل نقطة F
لC ونوع في مدخلات مثل 212، لاحظ أن الجواب انا ذاهب الى
الحصول على هذا الوقت هو في الواقع خطأ تماما.
0.0 ليست على درجة الصحيح في كما مئوية 212 فهرنهايت.
>> حسنا، ما الذي يحدث؟
حسنا، في خط 9، وذلك لأن 5 هو الآن صحيح، ولأن 9 هو الآن
صحيح، والنتيجة رياضيا يجب أن تكون 0.5555 وهلم جرا.
ولكن لأن النتيجة، وفقا ل قواعد C، ويجب أن يكون عدد صحيح، وهذا
0.5555 يحصل القيت بعيدا، وترك لنا فقط 0.
>> لذلك في النهاية، أنا في نهاية المطاف ضرب بالصدفة تماما 0 مرة و ناقص
32.0، وهو أمر ليس ما دائما ما تعطيني 0.
لذلك نأخذ في الاعتبار، في أي وقت باستخدام قيم النقطة العائمة في القرب من
رجات، قد لا بالضرورة الحصول على الجواب حتى كنت تتوقع.
وحتى تأخذ الرعاية للاستخدام، كما فعلت في قيم الحالة الأولى، النقطة العائمة
في جميع أنحاء لتجنب أي مشاكل من هذا القبيل.