BigDecimal এবং BigInteger হল দুটি গুরুত্বপূর্ণ ক্লাস যা Java.math প্যাকেজের অংশ এবং তাদের মধ্যে প্রধান পার্থক্য হল BigDecimal ক্লাস ডেসিমাল সংখ্যার সঠিক গণনা (যেমন আর্থিক হিসাব) করার জন্য ব্যবহৃত হয়, যখন BigInteger অন্তহীন পূর্ণসংখ্যা রেপ্রেজেন্ট করতে ব্যবহৃত হয়। কখনও কখনও আপনাকে BigDecimal কে BigInteger তে রূপান্তর করতে হতে পারে, বিশেষ করে যখন আপনি শুধুমাত্র পূর্ণসংখ্যা দরকার এবং দশমিকের স্থান উপেক্ষা করতে চান।
BigDecimal থেকে BigInteger তে রূপান্তর করার পদ্ধতি:
BigDecimal কে BigInteger তে রূপান্তর করতে, BigDecimal.toBigInteger() বা BigDecimal.toBigIntegerExact() মেথড ব্যবহার করা হয়। তবে, এগুলোর মধ্যে কিছু পার্থক্য রয়েছে:
toBigInteger(): এটি BigDecimal কে BigInteger তে রূপান্তর করে, কিন্তু যদি ডেসিমাল অংশ থাকে তবে এটি হালকা করে (ভগ্নাংশ সরিয়ে ফেলে)।toBigIntegerExact(): এটি BigDecimal এর মানের ভগ্নাংশ না থাকলে রূপান্তর করবে, কিন্তু যদি ভগ্নাংশ থাকে, তবেArithmeticExceptionছুড়ে দেবে।
উদাহরণ 1: BigDecimal থেকে BigInteger তে রূপান্তর (সাধারণ)
import java.math.BigDecimal;
import java.math.BigInteger;
public class BigDecimalToBigIntegerExample {
public static void main(String[] args) {
// Create a BigDecimal object
BigDecimal bigDecimal = new BigDecimal("123.456");
// Convert BigDecimal to BigInteger (removes the decimal part)
BigInteger bigInteger = bigDecimal.toBigInteger();
System.out.println("BigInteger after conversion: " + bigInteger);
}
}
Output:
BigInteger after conversion: 123
ব্যাখ্যা:
bigDecimal.toBigInteger(): এখানে,BigDecimalএর দশমিক অংশটি সরিয়ে ফেলেছে এবং শুধুমাত্র পূর্ণসংখ্যা অংশ123রূপান্তরিত হয়েছে।
উদাহরণ 2: BigDecimal থেকে BigInteger তে রূপান্তর (Exact Method)
import java.math.BigDecimal;
import java.math.BigInteger;
public class BigDecimalToBigIntegerExactExample {
public static void main(String[] args) {
// Create a BigDecimal object
BigDecimal bigDecimal = new BigDecimal("123.456");
try {
// Convert BigDecimal to BigInteger exactly (will throw exception if decimal part exists)
BigInteger bigInteger = bigDecimal.toBigIntegerExact();
System.out.println("BigInteger after exact conversion: " + bigInteger);
} catch (ArithmeticException e) {
System.out.println("Error: " + e.getMessage());
}
}
}
Output:
Error: Rounding necessary
ব্যাখ্যা:
toBigIntegerExact(): এটি ArithmeticException ছুড়ে দিয়েছে কারণBigDecimalএ দশমিক অংশ ছিল, এবং সঠিকভাবে রূপান্তর করা সম্ভব ছিল না।
উদাহরণ 3: BigDecimal থেকে BigInteger তে রূপান্তর (Negative Values)
import java.math.BigDecimal;
import java.math.BigInteger;
public class BigDecimalToBigIntegerNegativeExample {
public static void main(String[] args) {
// Create a BigDecimal object with a negative value
BigDecimal bigDecimal = new BigDecimal("-123.456");
// Convert BigDecimal to BigInteger (removes the decimal part)
BigInteger bigInteger = bigDecimal.toBigInteger();
System.out.println("BigInteger after conversion: " + bigInteger);
}
}
Output:
BigInteger after conversion: -123
ব্যাখ্যা:
toBigInteger(): এটিBigDecimalএর নেতিবাচক মান-123.456থেকে দশমিক অংশ সরিয়ে দিয়ে-123রূপান্তর করেছে।
সারাংশ:
BigDecimal.toBigInteger(): এটিBigDecimalএর দশমিক অংশটি সরিয়ে দিয়ে পূর্ণসংখ্যা প্রদান করে। এটি arbitrary-precision পূর্ণসংখ্যা প্রদান করে।BigDecimal.toBigIntegerExact(): এটিBigDecimalএর রূপান্তরকে exact করতে প্রয়োগ করা হয়, এবং যদি ডেসিমাল অংশ থাকে তবে এটিArithmeticExceptionছুড়ে দেয়।
Read more