উদাহরণ স্বরূপ,
int result;
result = 125/100;
অথবা
result = 43/100;
ফলাফল কি সর্বদা বিভাগের মেঝেতে থাকবে? সংজ্ঞায়িত আচরণ কী?
"I just throw the dam fraction part in the trash and move on with life"
উদাহরণ স্বরূপ,
int result;
result = 125/100;
অথবা
result = 43/100;
ফলাফল কি সর্বদা বিভাগের মেঝেতে থাকবে? সংজ্ঞায়িত আচরণ কী?
"I just throw the dam fraction part in the trash and move on with life"
উত্তর:
ফলাফল কি সর্বদা বিভাগের মেঝেতে থাকবে? সংজ্ঞায়িত আচরণ কী?
হ্যাঁ, দুটি অপারেন্ডের পূর্ণসংখ্যার যোগফল।
.5.৫.৫ গুণক অপারেটর
6 ইন্টিজারের ভাগ করা হয়, / অপারেটরের ফলাফল বাতিল কোনো ভগ্ন অংশ দিয়ে বীজগাণিতিক ভাগফল হয়। ৮৮) ভাগফল a / b উপস্থাপনযোগ্য হলে, এক্সপ্রেশন (a / b) * b + a% b এর সমান হবে।
এবং সম্পর্কিত পাদটীকা:
৮৮) এটিকে প্রায়শই '' শূন্যের দিকে ছাঁটাই '' বলা হয়।
অবশ্যই দুটি বিষয় উল্লেখযোগ্য:
3 সাধারণ গাণিতিক রূপান্তরগুলি অপারেন্ডগুলিতে সঞ্চালিত হয়।
এবং:
5 / অপারেটরের ফলাফলটি দ্বিতীয় দ্বারা প্রথম অপারেন্ডের বিভাগ থেকে ভাগফল হয়; % অপারেটরের ফলাফল বাকী। উভয় ক্রিয়াকলাপে, দ্বিতীয় অপারেন্ডের মান শূন্য হলে, আচরণটি সংজ্ঞায়িত।
[দ্রষ্টব্য: জোর আমার]
(a / b) * b + a % b == a
সন্তুষ্ট থাকতে হয়েছিল, এবং এর নিরঙ্কুশ মানটি a % b
কম হওয়া উচিত a
, তবে তা a % b
নেতিবাচক a
বা নেতিবাচক ছিল কিনা b
তা নির্দিষ্ট করা হয়নি।
ডির্কজেন্টিয়ালি সি 99 এ পূর্ণসংখ্যা বিভাগের একটি দুর্দান্ত বিবরণ দেয় , তবে আপনার এটিও জানা উচিত যে 89ণাত্মক অপারেন্ড সহ সি 89 এর পূর্ণসংখ্যা বিভাগের একটি বাস্তবায়ন-সংজ্ঞায়িত দিক রয়েছে।
এএনএসআই সি খসড়া (3.3.5) থেকে:
অপারেন্ডটি যদি নেতিবাচক হয় তবে / অপারেটরের ফলাফলটি বীজগণিত ভাগফলের চেয়ে কম সংখ্যক কম বা বীজগণিত ভাগফলের চেয়ে ক্ষুদ্রতম পূর্ণসংখ্যা বাস্তবায়ন-সংজ্ঞায়িত হয়, যেমন% অপারেটরের ফলাফলের লক্ষণ। যদি ভাগফল a / b উপস্থাপনযোগ্য হয় তবে এক্সপ্রেশন (a / b) * b + a% b এর সমান হবে।
সুতরাং আপনি যখন C89 সংকলকটির সাথে আটকে থাকেন তখন নেতিবাচক সংখ্যাগুলি সহ নজর রাখুন।
এটি একটি মজার সত্য যে C99 শূন্যের দিকে কাটছাঁটি বেছে নিয়েছে কারণ এটি ফোরট্রান এটি করেছিল। দেখুন এই বার্তাটি comp.std.c. উপর
reliable integer division
একটি নতুন ভাষার বৈশিষ্ট্য হিসাবে উল্লেখ করেছে । বিস্ময়কর *-*
।
expr1 / expr2
এবং expr1 % expr2
যখন উভয় স্থানেই একে অপরের সঙ্গে সামঞ্জস্যপূর্ণ হতে হবে expr1
একই ভাবে একই বস্তু একত্রিত করা, এবং জন্য একইভাবে expr2
কিন্তু ধরাশায়ী বিভাজন বনাম ছিন্ন পছন্দমত অন্যথায় অনির্দিষ্ট হয়। এটি খুব সামঞ্জস্যতা না ভেঙে আরও দক্ষ কোড জেনারেশনের অনুমতি দিত (এবং বাস্তবায়নগুলি যদি
ফলাফলটি নেতিবাচক যেখানে, সি ফ্লোরিংয়ের পরিবর্তে 0 এর দিকে ছাড়ে - পাইথন পূর্ণসংখ্যা বিভাগটি কেন এখানে সর্বদা মেলে তা সম্পর্কে আমি এই পড়াটি শিখেছি: পাইথনের পূর্ণসংখ্যা বিভাগ কেন মেঝে
filtered = (k - 1) * filtered + value + carry; carry = filtered % factor; filtered /= factor
পরিবর্তিত মানগুলির সাথে পুনরাবৃত্তি value
। এটি সময় ধ্রুবক সহ প্রথম অর্ডার লোপাস ফিল্টারের সাথে একটি সুন্দর পূর্ণসংখ্যার সমানকরণ করে k
... তবে বিভাগটি কেটে ফেলা হয় এবং carry
নেতিবাচক মানগুলি পাওয়া গেলে এটি কেবলমাত্র প্রতিসম হয় । বিভাগের জন্য উভয় আচরণ সময়ে সময়ে কার্যকর হয়।
div
মেঝে বিভাজন অপারেটর হয় এবং factor
বিজোড় হয় তবে filtered += (filter+(factor div 2)) div factor
সমস্ত মান পর্যন্ত পরিষ্কার এবং প্রতিসম আচরণ পাওয়া যাবে INT_MAX-(factor div 2)
।
হ্যাঁ, ফলাফল সর্বদা শূন্যের দিকে ছাঁটা হয়। এটি ক্ষুদ্রতম পরম মানের দিকে গোল হবে towards
-5 / 2 = -2
5 / 2 = 2
স্বাক্ষরবিহীন এবং অ-নেতিবাচক স্বাক্ষরিত মানগুলির জন্য, এটি মেঝে হিসাবে সমান (ইনফিনিটির দিকে বৃত্তাকার)।
ফলাফল কি সর্বদা বিভাগের মেঝেতে থাকবে?
না। ফলাফল পরিবর্তিত হয়, তবে প্রকরণটি কেবল নেতিবাচক মানের জন্য ঘটে।
সংজ্ঞায়িত আচরণ কী?
এটি পরিষ্কার floorণাত্মক অনন্তের দিকে তল রাউন্ডগুলি তৈরি করার জন্য, যখন শূন্যের দিকে পূর্ণসংখ্যা বিভাগের বৃত্তাকার (কাটা)
ইতিবাচক মানগুলির জন্য তারা একই
int integerDivisionResultPositive= 125/100;//= 1
double flooringResultPositive= floor(125.0/100.0);//=1.0
নেতিবাচক মানের জন্য এটি পৃথক
int integerDivisionResultNegative= -125/100;//=-1
double flooringResultNegative= floor(-125.0/100.0);//=-2.0