انجمن‌های فارسی اوبونتو

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید

نویسنده موضوع: ممیز شناور نادرست در پایتون(حل شد)  (دفعات بازدید: 903 بار)

0 کاربر و 1 مهمان درحال مشاهده موضوع.

آفلاین sajadspeed

  • Hero Member
  • *
  • ارسال: 978
  • جنسیت : پسر
ممیز شناور نادرست در پایتون(حل شد)
« : 16 بهمن 1401، 12:13 ب‌ظ »
سلام دوستان چند وقته با اضافه شدن یکسری اعداد اعشاری توی چند تا سیستم که از پایتون و JS(NodeJS) استفاده می‌کرد به مشکلی برخورد کردیم. عملیات ضرب زیر را ببینید:
1.1*3خوب قاعدتا باید جواب 3.3 باشه ولی پایتون و JS این جواب میدن:
3.3000000000000003بعد از سرچ متوجه شدم مال استاندارد IEEE-754 برای ممیز شناور هستش، مثلا الان ++C و ‌PHP مشکلی نداشتن و جواب درست می‌دادن.

حالا بهترین راه‌حل برای رفع این مشکل چیه؟
میشه کلا اعشار از هزارم دیگه در نظر نگرفت، میشه رندش کرد حتی، ولی موضوع اینه که در این سیستم باید اعداد به شکل دقیق حساب بشن و نمیشه یه راه‌حل کلی برای برای تمام اعداد پیاده کرد.

در ضمن تا حد زیادی متوجه شدم از جزئیات این مشکل و فرمت binary64 ولی از دوستان کسی بیشتر هم در مورد خود ماهیت این مسئله توضیح داد در کنار راه‌حل ممنون میشم.
« آخرین ویرایش: 17 بهمن 1401، 12:00 ب‌ظ توسط sajadspeed »

آفلاین دانیال بهزادی

  • ناظر انجمن
  • *
  • ارسال: 19722
  • جنسیت : پسر
  • Urahara Kiesuke
    • وبلاگ
پاسخ : ممیز شناور نادرست در پایتون
« پاسخ #1 : 16 بهمن 1401، 02:22 ب‌ظ »
همون‌طور که می‌دونی این مربوط به روش محاسبه در رایانه می‌شه. واقعاً هم برای کارهای عادی، دقت ده به توان منفی ۱۷ نیاز نیست و جواب درسته. اگه داریم کار محاسباتی دقیق می‌کنیم، مثلاً برای فناوری‌های نانو، از کتابخونه‌های مخصوصش استفاده می‌‌کنیم که این مسائل توش رعایت شده.
اگه این ارسال بهت کمک کرد، دنبال دکمهٔ تشکر نگرد. به جاش تو هم به جامعهٔ آزادت کمک کن

آفلاین sajadspeed

  • Hero Member
  • *
  • ارسال: 978
  • جنسیت : پسر
پاسخ : ممیز شناور نادرست در پایتون
« پاسخ #2 : 16 بهمن 1401، 03:35 ب‌ظ »
خوب ببینید من دقیق نتونستم مطالعه کنم، که کامل به این نحوه محاسبه مسلط بشم. الان پس می‌فرمایید این باگ بیشتر از 17-^10 نمیشه؟ تعداد ارقام اعشاری که در این سیستم وارد میشه ۶ تا است، پس من تمام اعداد فقط با ۶ رقم ممیز حساب کنم ایرادی پیش نمیاد؟

آفلاین دانیال بهزادی

  • ناظر انجمن
  • *
  • ارسال: 19722
  • جنسیت : پسر
  • Urahara Kiesuke
    • وبلاگ
پاسخ : ممیز شناور نادرست در پایتون
« پاسخ #3 : 17 بهمن 1401، 01:08 ق‌ظ »
نه. هیچ مشکلی نیست.
اگه این ارسال بهت کمک کرد، دنبال دکمهٔ تشکر نگرد. به جاش تو هم به جامعهٔ آزادت کمک کن

آفلاین sajadspeed

  • Hero Member
  • *
  • ارسال: 978
  • جنسیت : پسر
پاسخ : ممیز شناور نادرست در پایتون
« پاسخ #4 : 17 بهمن 1401، 12:00 ب‌ظ »
ممنون که وقت گذاشتید.