سلام دوستان چند وقته با اضافه شدن یکسری اعداد اعشاری توی چند تا سیستم که از پایتون و JS(NodeJS) استفاده میکرد به مشکلی برخورد کردیم. عملیات ضرب زیر را ببینید:
1.1*3
خوب قاعدتا باید جواب 3.3 باشه ولی پایتون و JS این جواب میدن:
3.3000000000000003
بعد از سرچ متوجه شدم مال استاندارد IEEE-754 برای ممیز شناور هستش، مثلا الان ++C و PHP مشکلی نداشتن و جواب درست میدادن.
حالا بهترین راهحل برای رفع این مشکل چیه؟
میشه کلا اعشار از هزارم دیگه در نظر نگرفت، میشه رندش کرد حتی، ولی موضوع اینه که در این سیستم باید اعداد به شکل دقیق حساب بشن و نمیشه یه راهحل کلی برای برای تمام اعداد پیاده کرد.
در ضمن تا حد زیادی متوجه شدم از جزئیات این مشکل و فرمت binary64 ولی از دوستان کسی بیشتر هم در مورد خود ماهیت این مسئله توضیح داد در کنار راهحل ممنون میشم.