سؤال

قبل سنوات تعلمت بالطريقة الصعبة عن الدقة مشاكل مع يطفو لذا تركت استخدامها.ومع ذلك أنا لا تزال تعمل في التعليمات البرمجية باستخدام يطفو يجعلني تذلل لأنني أعرف بعض الحسابات سوف تكون غير دقيقة.

لذلك فإنه من المناسب استخدام تعويم ؟

تحرير: كما من المعلومات لا أعتقد أن كنت قد تأتي عبر برنامج حيث دقة عدد ليس مهما.ولكن أود أن تكون مهتمة في السمع الأمثلة.

هل كانت مفيدة؟

المحلول

الجواب القصير:لديك فقط لاستخدام تطفو عندما كنت تعرف بالضبط ما تفعلين ولماذا.

الجواب طويل: يطفو (بدلا من الزوجي) لا تستخدم حقا بعد الآن خارج 3D Api بقدر ما أعرف.يطفو يضاعف لها نفس خصائص الأداء في وحدات المعالجة المركزية الحديثة ، يضاعف إلى حد ما أكبر و هذا كل شيء.إذا كنت في شك, مجرد استخدام مزدوج.

أوه نعم, واستخدام عشري على الحسابات المالية ، بالطبع.

نصائح أخرى

كل نقطة عائمة الحسابات inaccurature في حالة عامة ، يتحرك فقط أكثر من الضعف.إذا كنت تريد المزيد من المعلومات قراءة ما كل عالم الكمبيوتر يجب أن تعرف عن حساب الفاصلة العائمة

أما عند استخدام العوامات - وغالبا ما تستخدم عندما تكون الدقة أقل أهمية من توفير الذاكرة.على سبيل المثال بسيط الجسيمات المحاكاة في ألعاب الفيديو.

أولا ابدأ استخدام العوامات أو الزوجي إذا كنت تريد أن تمثل القيم العشرية بالضبط - استخدام أي عدد صحيح أنواع (الباحث طويلة الخ) أو العشرية (الذي هو مجرد نوع عدد صحيح مع عامل القياس).يطفو الزوجي يتم تحويل داخليا الأسي التمثيل في قاعدة 2 والأرقام ممثلة بالضبط في أسي التمثيل في قاعدة 10 أن تكون ممثلة بالضبط.(E. g. ، العدد 10 هو فقط يمثل حوالي طريق العوامات أو الزوجي).

ثانيا ، من حيث الدقة فإنه يعتمد على ما تحتاج إليه.أنا لا أتفق مع المشاعر الخاصة بك ابدا ان هناك حسابات حيث الدقة لا يهم.لديك عادة حاجة معينة أن النتيجة النهائية هي الأصح القول ، 3 أرقام.فإنه لا معنى للبحث عن أعلى دقة ممكنة إذا المدخلات الخاصة بك محدودة فقط دقة - يقول كنت تزن بعض 5g من الدقيق الجدول الخاص بك فقط دقة 0.5 غرام.وقال الحساب المتوسطة عادة الاستفادة من الدقة العالية ولكن ما هو أكثر أهمية عالية الدقة إذا كان في كثير من الأحيان السرعة.

ثالثا ، عندما preforming سلسلة من العمليات الحسابية ، ويقول في حلقة ، عليك أن تعرف ما تقومون به عند التعامل مع أي دقيق الحسابات - سوف تتحمل أخطاء الدورة إيقاف بعض الخوارزميات قد لا تصل الى إجابة على أي درجة من الدقة.فهم هذه القضايا بالتفصيل قد تتطلب دورة في التحليل العددي.هذا لا يعتمد على ما إذا كنت تختار يطفو أو الزوجي على الحسابات الخاصة بك.

النقطة العائمة الحسابات عادة ما تذهب مع الزوجي لأنها أعم و أسرع من العوامات.بيد أن يطفو هي أصغر إذا كنت بحاجة إلى تخزين الكثير منهم هم الخيار لمنع مشكلة الأداء بسبب ذاكرة التخزين المؤقت يخطئ.

على حد علمي معالجة النقطة العائمة معتمد في الأجهزة الزوجي ولكن لا يطفو ، وذلك باستخدام يطفو يتحمل التحويل إلى مضاعفة.إلا أن بعض إجراءات من شأنها وقف عاجلا عند حساب قيمة تكرارا عند تمرير تعويم, لأن هذا يعني أن كنت تريد فقط عن 8 أرقام الدقة مقابلحوالي 16 على الزوجي.

هناك العديد من الحالات قد ترغب في استخدام float.ما أنا لا أفهم ذلك ، هو ما يمكنك استخدامها بدلا من ذلك.إذا كنت تقصد استخدام double بدلا من float, ثم نعم, في معظم الحالات, كنت تريد أن تفعل ذلك.ومع ذلك ، double سيكون لديك أيضا الدقة القضايا.يجب عليك استخدام decimal كلما دقة هو المهم.

float و double هي مفيدة جدا في العديد من التطبيقات. decimal هي مكلفة نوع البيانات ومجموعة (حجم أكبر عدد يمكن أن تمثل) أقل من double.أجهزة الكمبيوتر عادة أجهزة خاصة على مستوى دعم تلك الأنواع من البيانات.فهي تستخدم الكثير في الحوسبة العلمية.في الأساس, فهي الابتدائي كسور أنواع البيانات التي تريد استخدامها.ومع ذلك ، في الحسابات النقدية ، حيث الدقة أمر مهم للغاية ، decimal هو الطريق للذهاب.

السبب الأكثر شيوعا كنت أفكر فيه هو لتوفير مساحة.لا أن هذا هو في كثير من الأحيان يستحق القلق, ولكن في بعض الحالات فإنه المسائل.تعويم يستغرق نصف الذاكرة قدر مزدوجة, بحيث يمكنك الحصول على ضعف عدد في نفس الفضاء.على سبيل المثال كان لدي مجموعة من الأرقام التي كانت كبيرة جدا لتناسب ذاكرة الوصول العشوائي كما الزوجي ولكن تناسب مجموعة من العوامات.

هناك في الواقع شيء واحد حيث لا يزال من الشائع استخدام العوامات الملقب "دقة واحدة" مع 32 بت:تطبيقات الرسوم البيانية والطباعة.

والسبب الآخر هي البطاقات الرسومية مع وحدات معالجة الرسومات.أصغر نوع البيانات أسرع العملية لأن أقل بت يجب نقلها.أنواع البيانات عدد صحيح لدينا مشاكل مع صور عالية المدى الديناميكي:العين هي قادرة على العمل على مجموعة من معان 1:10^13 ويرى كاليفورنيا.4000 المستويات.حتى حين أنواع البيانات عدد صحيح يمكن تخزين عدد من مستويات أنهم غير قادرين على تخزين خلفية السطوع في حين يطفو لديك أي مشاكل مع هذا.في الواقع IEEE 754R يسمح جديد "نصف الدقة" تعويم مع 16 بت و 10 بت العشري الذي يفقد بعض الدقة ولكن من شأنها أن تسمح زيادة السرعة.برنامج OpenGL و DirectX مثلااستخدام يطفو على نطاق واسع.العين هو متسامح جدا مع التحف ، لذلك لا مشكلة هناك.

جميع وسائل الإعلام الأخرى بناء على الرسومات هي وراثة يطفو كما كونفينينت التدبير.العشري 24 بت مما يسمح ولذلك 2^24 = 16,7 الملايين خطوات متتالية.إذا كان لديك طابعة مع 2000 نقطة في البوصة, كنت لا تزال قادرة على طباعة 213x213 م الأوراق.أكثر من ما يكفي من الدقة.

استخدام تطفو على الأداء و الحجم.إذا كنت تستطيع إدارة الدقة الخسارة.

وفي حين أنه صحيح أن الحديث المعالج يأخذ نفس الكمية من الوقت عملية مفردة ومزدوجة الدقة opertions ، يمكن في بعض الأحيان الحصول على مرتين الإنتاجية إذا كنت تستخدم يطفو مع SIMD (MMX/SSE/الخ.على x86) التعليمات.

SSE سجلات 128 بت واسعة ، يمكن أن تعقد 4 يطفو أو 2 الزوجي.وهكذا ، إذا ما استخدمت بشكل صحيح, يمكنك القيام به مرتين في العديد من العمليات مع يطفو مقارنة الزوجي.

حجم الحد (4 بايت بدلا من 8) يصبح من المهم عند التعامل مع مجموعات البيانات الكبيرة جدا (خفض الحجم عادة ما يحسن الأداء ، وكذلك بسبب التخزين المؤقت ، إلخ.)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top