RoundingMode একটি Java.math প্যাকেজের অংশ যা BigDecimal বা BigDecimal সম্পর্কিত গণনা পরিচালনা করার সময় decimal rounding কৌশল নির্ধারণে ব্যবহৃত হয়। যখন কোনো দশমিক মানের রাউন্ডিং করা হয়, তখন রাউন্ডিং কৌশল নির্বাচন করা হয় যাতে সঠিক গাণিতিক ফলাফল পাওয়া যায়।
Java-তে রাউন্ডিং মোডগুলির বেশ কিছু ধরনের রয়েছে, যেগুলি RoundingMode কন্সট্যান্ট হিসাবে উপলব্ধ। এগুলি বিভিন্ন পরিস্থিতিতে সঠিক রাউন্ডিং নিশ্চিত করতে ব্যবহৃত হয়।
RoundingMode এর ধরন:
RoundingMode.UP:- এই মোডে, দশমিক স্থানগুলির পরে কোনো অঙ্ক থাকলে, সে সংখ্যাটি পরবর্তী মানে এগিয়ে যাবে।
- উদাহরণ: 5.6 এর রাউন্ডিং 6 হবে।
RoundingMode.DOWN:- এই মোডে, দশমিক স্থানগুলির পরে কোনো অঙ্ক থাকলে, সে সংখ্যাটি নিচে চলে যাবে।
- উদাহরণ: 5.6 এর রাউন্ডিং 5 হবে।
RoundingMode.CEILING:- এই মোডে, দশমিক স্থানগুলির পরে যদি কোন অঙ্ক থাকে, তাহলে এটি উপরের দিকে রাউন্ড হবে (যদিও মান ইতিমধ্যেই ইতিবাচক বা নেতিবাচক হতে পারে)।
- উদাহরণ: -5.6 এর রাউন্ডিং -5 হবে, কিন্তু 5.4 এর রাউন্ডিং 6 হবে।
RoundingMode.FLOOR:- এই মোডে, দশমিক স্থানগুলির পরে যদি কোনো অঙ্ক থাকে, তবে এটি নিচের দিকে রাউন্ড হবে (যদিও মান ইতিমধ্যেই ইতিবাচক বা নেতিবাচক হতে পারে)।
- উদাহরণ: -5.6 এর রাউন্ডিং -6 হবে, কিন্তু 5.4 এর রাউন্ডিং 5 হবে।
RoundingMode.HALF_UP:- এই মোডে, দশমিক পরিমাণের পরবর্তী অঙ্ক যদি 5 বা তার বেশি হয়, তবে রাউন্ডিং এগিয়ে হবে। অন্যথায়, আগের সংখ্যাটিই থাকবে।
- উদাহরণ: 5.5 এর রাউন্ডিং 6 হবে, কিন্তু 5.4 এর রাউন্ডিং 5 হবে।
RoundingMode.HALF_DOWN:- এই মোডে, দশমিক পরিমাণের পরবর্তী অঙ্ক যদি 5 বা তার বেশি হয়, তবে রাউন্ডিং নিচে হবে।
- উদাহরণ: 5.5 এর রাউন্ডিং 5 হবে, কিন্তু 5.6 এর রাউন্ডিং 6 হবে।
RoundingMode.HALF_EVEN(Bankers' Rounding):- এই মোডে, দশমিক পরিমাণের পরবর্তী অঙ্ক যদি 5 হয়, তবে এটি সবচেয়ে নিকটতম বিজোড় সংখ্যা-তে রাউন্ড করবে (বা "bankers' rounding")।
- উদাহরণ: 0.5 এর রাউন্ডিং 0 হবে, কিন্তু 1.5 এর রাউন্ডিং 2 হবে।
RoundingMode এর উদাহরণ সহ ব্যবহার
RoundingMode ক্লাসটি সাধারণত BigDecimal ক্লাসের setScale() মেথডের সঙ্গে ব্যবহৃত হয়, যা দশমিক স্থান নির্ধারণ করার সময় রাউন্ডিং মোড ব্যবহার করতে সহায়ক।
Example 1: RoundingMode.UP
import java.math.BigDecimal;
import java.math.RoundingMode;
public class RoundingModeExample {
public static void main(String[] args) {
BigDecimal value = new BigDecimal("5.4567");
// Rounding up to 2 decimal places
BigDecimal roundedValue = value.setScale(2, RoundingMode.UP);
System.out.println("Rounded UP: " + roundedValue); // Output: 5.46
}
}
Output:
Rounded UP: 5.46
Explanation:
- RoundingMode.UP ব্যবহার করে
5.4567সংখ্যাটি 2 দশমিক স্থান পর্যন্ত এগিয়ে রাউন্ড করা হয়েছে, যা 5.46 হয়।
Example 2: RoundingMode.DOWN
import java.math.BigDecimal;
import java.math.RoundingMode;
public class RoundingModeExample {
public static void main(String[] args) {
BigDecimal value = new BigDecimal("5.4567");
// Rounding down to 2 decimal places
BigDecimal roundedValue = value.setScale(2, RoundingMode.DOWN);
System.out.println("Rounded DOWN: " + roundedValue); // Output: 5.45
}
}
Output:
Rounded DOWN: 5.45
Explanation:
- RoundingMode.DOWN ব্যবহার করে
5.4567সংখ্যাটি 2 দশমিক স্থান পর্যন্ত নিচে রাউন্ড করা হয়েছে, যা 5.45 হয়।
Example 3: RoundingMode.HALF_UP
import java.math.BigDecimal;
import java.math.RoundingMode;
public class RoundingModeExample {
public static void main(String[] args) {
BigDecimal value = new BigDecimal("5.567");
// Rounding half up to 2 decimal places
BigDecimal roundedValue = value.setScale(2, RoundingMode.HALF_UP);
System.out.println("Rounded HALF_UP: " + roundedValue); // Output: 5.57
}
}
Output:
Rounded HALF_UP: 5.57
Explanation:
- RoundingMode.HALF_UP ব্যবহার করে
5.567সংখ্যাটি 2 দশমিক স্থান পর্যন্ত রাউন্ড করা হয়েছে, যেখানে দশমিকের পরবর্তী সংখ্যা 5, তাই এটি উপর রাউন্ড হয়ে 5.57 হয়েছে।
Example 4: RoundingMode.HALF_EVEN (Bankers' Rounding)
import java.math.BigDecimal;
import java.math.RoundingMode;
public class RoundingModeExample {
public static void main(String[] args) {
BigDecimal value1 = new BigDecimal("0.5");
BigDecimal value2 = new BigDecimal("1.5");
// Rounding half even (bankers' rounding)
BigDecimal roundedValue1 = value1.setScale(0, RoundingMode.HALF_EVEN);
BigDecimal roundedValue2 = value2.setScale(0, RoundingMode.HALF_EVEN);
System.out.println("Rounded HALF_EVEN (0.5): " + roundedValue1); // Output: 0
System.out.println("Rounded HALF_EVEN (1.5): " + roundedValue2); // Output: 2
}
}
Output:
Rounded HALF_EVEN (0.5): 0
Rounded HALF_EVEN (1.5): 2
Explanation:
- RoundingMode.HALF_EVEN বা Bankers' Rounding এ,
0.5রাউন্ড হয়ে 0 হবে এবং1.5রাউন্ড হয়ে 2 হবে। এটি নিকটতম even সংখ্যার দিকে রাউন্ড করে।
RoundingMode এর প্রভাব এবং ব্যবহার:
- Precision Control:
RoundingModeদশমিক স্থান বা সঠিকতা নির্ধারণে সাহায্য করে, যেমন অর্থনৈতিক গণনা, বিজ্ঞান, বা অন্যান্য ক্ষেত্রে যেখানে সঠিকতা অপরিহার্য। - Bankers' Rounding:
HALF_EVENমোডটি ব্যাংকিং সেক্টরে ব্যবহার করা হয় যেখানে একই রাউন্ডিং পদ্ধতি (এভেন সংখ্যায় রাউন্ডিং) ব্যবহার করা হয়, যাতে দীর্ঘমেয়াদি গণনায় ক্ষুদ্র ত্রুটি না হয়। - Financial Applications:
HALF_UPএবংHALF_DOWNরাউন্ডিং পদ্ধতি আর্থিক অ্যাপ্লিকেশনগুলিতে ব্যবহৃত হয়, যেখানে দশমিক স্থান সঠিকভাবে রাউন্ড করতে হয়।
RoundingMode বিভিন্ন ধরনের রাউন্ডিং পদ্ধতির জন্য অত্যন্ত গুরুত্বপূর্ণ, যা আপনাকে দশমিক সংখ্যার সঠিকভাবে রাউন্ডিং করতে সাহায্য করে। এই মোডগুলো BigDecimal বা BigInteger-এর মাধ্যমে গাণিতিক গণনা এবং আর্থিক হিসাবগুলিতে সঠিক রাউন্ডিং সমর্থন করে।
Read more