যেমন আগেই বলা হয়েছিল, ধনাত্মক সংখ্যার জন্য তারা একই, তবে তারা নেতিবাচক সংখ্যার জন্য পৃথক। নিয়মটি হ'ল 0 টির দিকে ইনট রাউন্ড, অন্যদিকে মেঝে রাউন্ডটি নেতিবাচক অসীমের দিকে।
floor(4.5) = (int)4.5 = 4
floor(-4.5) = -5
(int)(-4.5) = -4
এটি বলা হচ্ছে, মৃত্যুদণ্ড কার্যকর করার সময়টিতেও পার্থক্য রয়েছে। আমার সিস্টেমে, আমি টাইম করেছি যে কাস্টিং তল থেকে কমপক্ষে 3 গুণ বেশি দ্রুত।
আমার কাছে কোড রয়েছে যার নেতিবাচক সংখ্যা সহ সীমিত মানের মানগুলির মেঝে অপারেশন প্রয়োজন। এবং এটি খুব দক্ষ হওয়া দরকার, তাই আমরা এর জন্য নিম্নলিখিত ফাংশনটি ব্যবহার করি:
int int_floor(double x)
{
return (int)(x+100000) - 100000;
}
অবশ্যই এটি এক্স এর খুব বড় মানগুলির জন্য ব্যর্থ হবে (আপনি কিছু ওভারফ্লো সংক্রান্ত সমস্যার সমাধান করবেন) এবং -100000 এর নীচে নেতিবাচক মানগুলির জন্য। তবে আমি এটিকে মেঝে থেকে কমপক্ষে 3 গুণ বেশি দ্রুতগতিতে আটকে রেখেছি, যা সত্যিই সমালোচনামূলক ছিল আমাদের অ্যাপ্লিকেশন জন্য। এটিকে নুনের দানার সাথে নিয়ে নিন, এটি আপনার সিস্টেমে পরীক্ষা করুন ইত্যাদি but
floor
তবে সাবধান থাকুন যে এটি এর জন্যdouble
নয়float
। C99 এছাড়াও আছেfloorf
জন্যfloat
।