আমার সি ++ তে একটি প্রোগ্রাম রয়েছে (জি ++ ব্যবহার করে সংকলিত)। আমি মডুলাস ফাংশনে অপারেটর হিসাবে দুটি ডাবল প্রয়োগ করার চেষ্টা করছি, তবে আমি নিম্নলিখিত ত্রুটিটি পেয়েছি:
ত্রুটি: বাইনারি 'অপারেটর%' তে 'ডাবল' এবং 'ডাবল' প্রকারের অবৈধ অপারেশনগুলি
কোডটি এখানে:
int main() {
double x = 6.3;
double y = 2;
double z = x % y;
}
@ সুপারকার্যাট আরও বিশদ বিবরণ হবে। আমি মনে করি আপনি কী সত্য বলছেন তা ঘটানোর জন্য পর্দার আড়ালে কী রয়েছে তার একটি ধারণা আছে তবে আপনি যা বলেন তা সত্য বলে যুক্তিগুলি দেখে ভাল লাগবে; পর্দার আড়ালে এটি কীভাবে কাজ করে তা দেখতে আকর্ষণীয় হবে (আমি মনে করি আমি বুঝতে পেরেছি তবে খুব সহজেই ভুল হতে পারে)।
—
রাস্তাজেদি
ভাসমান-পয়েন্টের মানগুলি হুবহু সংখ্যার গুণক বা দুটিয়ের ক্ষয়ের ভগ্নাংশ উপস্থাপন করে। উদাহরণস্বরূপ, পূর্ণসংখ্যার আক্ষরিক 0.1 হুবহু 3602879701896397/36028797018963968 (পরের মানটি একটি শক্তির)।
—
ক্যাট
fmod(x,0.1)
সংখ্যার মান "এক দশমাংশ" দ্বারা ভাগ করার পরিবর্তে সেই নির্দিষ্ট ভগ্নাংশ দ্বারা x কে ভাগ করবে এবং বাকী অংশটি নেবে।
সম্ভাব্য সদৃশ: মডুলাস বিভাগ (%) শুধুমাত্র পূর্ণসংখ্যার সাথে কেন কাজ করে?
—
পল আর
fmod
অপ্রত্যাশিত আচরণের কারণ হতে পারে। উদাহরণস্বরূপ,fmod(1, 0.1);
গাণিতিকভাবে শূন্য হওয়া উচিত তবে বাস্তবে এটি প্রায় 0.1 হয়। ত্রুটির পরিমাণটি ভাগফলের মাত্রার সাথে বেড়ে যায়। উদাহরণস্বরূপ,fmod(9E14, 0.1);
প্রায় 0.05 এ মূল্যায়ন করে, যা গাণিতিক দিক থেকে খুব সাধারণ ভুল।