ایجاد سوال
dark_mode
0 دوستدار 0 امتیاز منفی
30 visibility
موضوع: آفیس توسط:

نیک اشاره می‌کند که فرمول "=0.28*100-INT(0.28*100)=0" False را برمی‌گرداند حتی اگر آشکارا درست باشد. او معتقد است که این مسئله به گرد کردن و نحوه استفاده کامپیوتر از محاسبات باینری و غیره مربوط می شود. نیک از فرمول به عنوان بخشی از یک عبارت بزرگتر IF استفاده می کند و او فرض می کند که خطاهای گرد کردن دیگری در اکسل وجود دارد که می تواند به او برسد و او را گاز بگیرد. . او فکر می کند که آیا راه ساده ای برای جلوگیری از دام های فرمول مانند این وجود دارد؟

قبل از بررسی راه های ساده برای جلوگیری از این نوع مشکل، مهم است که بفهمید چرا مشکل وجود دارد. همانطور که نیک اشاره می کند، واقعاً به حساب باینری و این واقعیت که اکسل اطلاعات را گرد می کند، مربوط می شود. در پشت صحنه، اکسل همیشه اطلاعات را به 15 رقم گرد می کند. محاسبه ای را که نیک با آن کار می کند در نظر بگیرید:

=0.28*100-INT(0.28*100)=0

هنگامی که اکسل برای اولین بار این را محاسبه می کند، اولویت پس از اکسل آن را به این صورت محاسبه می کند:

=(0.28*100-INT(0.28*100))=0

به مجموعه پرانتز اضافی توجه کنید. نتیجه هر چیزی که در سمت چپ آن علامت مساوی نهایی است 3.55E-15 است، به این معنی که شما با این فرمول (دراز) پایان می‌دهید:

=0.00000000000000355=0

بدیهی است که این درست نیست، به همین دلیل است که مقدار False را دریافت می کنید. راه های مختلفی برای "رفع" این وضعیت وجود دارد. در این مورد، شاید ساده ترین کار این باشد که به سادگی فرمول خود را تغییر دهید تا نیاز به مقایسه با صفر را برطرف کنید:

=0.28*100=INT(0.28*100)

این فرمول همان طور که انتظار دارید True را برمی گرداند. با این حال، این ممکن است برای همه نیازهای شما کار نکند. بنابراین، یک قانون سرانگشتی بهتر برای جلوگیری از مشکلات این است که هرگز به گرد کردن اکسل اعتماد نکنید. شما این کار را با اجرای گرد کردن صریح خود انجام می دهید، همانطور که با این فرمول ها نشان داده شده است:

=INT(0.28*100)-INT(0.28*100)=0
=ROUND(0.28*100,0)-INT(0.28*100)=0
=ROUND(0.28*100,5)-ROUND(0.28*100,5)=0

توجه داشته باشید که در این موارد، به اکسل اجازه نمی‌دهید تا محاسبات را با دقت کامل انجام دهد، زیرا در مقایسه با یک مقدار خاص، مانند صفر، می‌تواند نتایج غیرمنتظره‌ای ایجاد کند. در عوض، شما اکسل را مجبور می‌کنید تا مقادیر را - تمام مقادیری که با آنها کار می‌کنید - به هر سطحی از دقت که برای مقایسه خود نیاز دارید گرد کند.

روش دیگر این است که مقایسه را با یک مقدار دقیق، مانند صفر انجام ندهید. در عوض، در مقایسه، مقداری «عامل فاج» را در نظر بگیرید، که امکان گرد کردن مسائل را فراهم می‌کند. برای مثال، ممکن است تعیین کنید که فقط اهمیت می‌دهید که مقایسه با یک صدم واحدهایی که فرض می‌کنید دقیق باشد. در آن صورت، فرمول اصلی را می توان به این صورت تغییر داد:

=0.28*100-INT(0.28*100)

همانطور که انتظار می رود این True برمی گردد.

اگر خواستی، با این لینک از ما حمایت کن

پاسخ شما

looks_5نام شما برای نمایش - اختیاری
حریم شخصی : آدرس ایمیل شما محفوظ میماند و برای استفاده های تجاری و تبلیغاتی به کار نمی رود
عدد چهار رقمی در تصویر را وارد کنید

برای جلوگیری از این تایید در آینده, لطفا وارد شده یا ثبت نام کنید.
اگر حساب گوگل دارید به راحتی وارید شوید

0 پاسخ وجود دارد

سوال مشابهی یافت نشد

برای دسترسی راحت به مطالب سایت ، اپلیکیشن سایت را نصب کنید
و لطفا بعد از نصب امتیاز دهید. با تشکر از حمایت شما

23.2k سوال

8.5k پاسخ

613 دیدگاه

10.8k کاربر

134 نفر آنلاین
1 عضو و 133 مهمان در سایت حاضرند
اعضای حاضر در سایت
بازدید امروز: 9122
بازدید دیروز: 13001
بازدید کل: 19463416
...