পাইথনে Decimal নামে একটি মডিউল রয়েছে, যা দশমিক ফ্লোটিং পয়েন্ট সংক্রান্ত কাজ করার জন্য ব্যবহৃত হয়। এই মডিউল সঠিকভাবে রাউন্ড করা ফ্লোটিং পয়েন্ট అరিথমেটিক প্রদান করে।
এটি ব্যবহার করতে হলে প্রথমে Decimal স্ট্যান্ডার্ড লাইব্রেরি মডিউলটি ইম্পোর্ট করতে হবে।
import decimal
এই বিভাগে আমরা Decimal মডিউলের কিছু গুরুত্বপূর্ণ ফাংশন দেখব।
বর্গমূল ফাংশন sqrt() এবং এক্সপোনেন্ট ফাংশন exp()
sqrt() মেথড একটি দেওয়া দশমিক টাইপ অবজেক্টের বর্গমূল গণনা করতে ব্যবহৃত হয়। আর exp() মেথড দেওয়া x-এর জন্য e^x মান দশমিক সংখ্যা হিসেবে ফেরত দেয়।
উদাহরণ কোড
# sqrt() এবং exp() মেথড বাস্তবায়ন
import decimal
my_dec = decimal.Decimal(25.36)
print(my_dec)
# দশমিক সংখ্যার বর্গমূল খুঁজুন
print('Square Root is: ' + str(my_dec.sqrt()))
# দশমিক সংখ্যার জন্য e^x খুঁজুন
print('e^x is: ' + str(my_dec.exp()))
আউটপুট
25.3599999999999994315658113919198513031005859375 Square Root is: 5.035871324805668565859161094 e^x is: 103206740212.7314661465187086
লগারিদমিক ফাংশনসমূহ
Decimal মডিউলে কিছু লগারিদমিক ফাংশন রয়েছে। এখানে আমরা 그중 দুটি নিয়ে আলোচনা করব। প্রথমটি হলো ln() মেথড। এই মেথড দশমিক সংখ্যার স্বাভাবিক লগারিদম খুঁজে বের করতে ব্যবহৃত হয়।
দ্বিতীয় মেথড হলো log10() মেথড। এই মেথড বেস ১০-এ লগারিদমিক মান খুঁজে বের করতে ব্যবহৃত হয়।
উদাহরণ কোড
# ln() এবং log10() মেথড বাস্তবায়ন
import decimal
my_dec = decimal.Decimal(25.36)
print(my_dec)
# বেস e-এ লগারিদমিক মান খুঁজুন
print('ln(x) is: ' + str(my_dec.ln()))
# বেস ১০-এ লগারিদমিক মান খুঁজুন
print('log(x) is: ' + str(my_dec.log10()))
আউটপুট
25.3599999999999994315658113919198513031005859375 ln(x) is: 3.233173129569025152000878282 log(x) is: 1.404149249209695070459909761
as_tuple() এবং fma() মেথড
as_tuple মেথড দশমিককে তিনটি উপাদানের সাথে একটি টাপল হিসেবে প্রতীকী করতে ব্যবহৃত হয়। উপাদানগুলো হলো সাইন, ডিজিট এবং এক্সপোনেন্ট মান। সাইন ফিল্ডে যখন সংখ্যা ০, তখন इसका অর্থ দশমিকটি পজিটিভ, যখন ১, তবে এটি নেগেটিভ সংখ্যা প্রতীকী করে।
fma() মেথডকে ফিউজড মাল্টিপ্লিকেশন এবং অ্যাড বা সংযোজিত গুণ এবং যোগ হিসেবে পরিচিত। যদি আমরা fma(x, y) ব্যবহার করি তবে এটি (number * x) + y গণনা করবে। এই ক্ষেত্রে (number*x) অংশটি রাউন্ড অফ হবে না।
উদাহরণ কোড
# as_tuple() এবং fma() মেথড বাস্তবায়ন
import decimal
my_dec1 = decimal.Decimal(5.3)
print(my_dec1)
my_dec2 = decimal.Decimal(-9.23)
print(my_dec2)
# দশমিককে টাপল হিসেবে দেখান
print('\nmy_dec1 as tuple: ' + str(my_dec1.as_tuple()))
print('\nmy_dec2 as tuple: ' + str(my_dec2.as_tuple()))
# ফিউজড মাল্টিপ্লাই এবং অ্যাড বাস্তবায়ন
print('\n(x*5)+8 is: ' + str(my_dec1.fma(5, 8)))
আউটপুট
5.29999999999999982236431605997495353221893310546875 -9.230000000000000426325641456060111522674560546875 my_dec1 as tuple: DecimalTuple(sign=0, digits=(5, 2, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8, 2, 2, 3, 6, 4, 3, 1, 6, 0, 5, 9, 9, 7, 4, 9, 5, 3, 5, 3, 2, 2, 1, 8, 9, 3, 3, 1, 0, 5, 4, 6, 8, 7, 5), exponent=-50) my_dec2 as tuple: DecimalTuple(sign=1, digits=(9, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2, 6, 3, 2, 5, 6, 4, 1, 4, 5, 6, 0, 6, 0, 1, 1, 1, 5, 2, 2, 6, 7, 4, 5, 6, 0, 5, 4, 6, 8, 7, 5), exponent=-48) (x*5)+8 is: 34.49999999999999911182158030
compare() মেথড
এই কমপেয়ার মেথড দুটি দশমিক সংখ্যা তুলনা করার জন্য। যখন সংখ্যাগুলো একই, তবে এটি ০ ফেরত দেবে, অন্যথায়, যখন প্রথম সংখ্যা বড়, তবে এটি +১ দেবে, এবং যখন প্রথম আর্গুমেন্ট ছোট, তবে এটি -১ ফেরত দেবে।
উদাহরণ কোড
# compare() মেথড বাস্তবায়ন
import decimal
# তুলনা যখন দুটি সমান
print('Compare value: ' + str(decimal.Decimal(-5.3).compare(decimal.Decimal(-5.3))))
# তুলনা যখন প্রথমটি ছোট
print('Compare value: ' + str(decimal.Decimal(-5.3).compare(decimal.Decimal(9.26))))
# তুলনা যখন প্রথমটি বড়
print('Compare value: ' + str(decimal.Decimal(-5.3).compare(decimal.Decimal(-13.25))))
আউটপুট
Compare value: 0 Compare value: -1 Compare value: 1
কপি করার কিছু ফাংশন
দশমিক সংখ্যাকে অন্য দশমিক অবজেক্টে কপি করার জন্য কিছু ভিন্ন মেথড রয়েছে। প্রথম মেথড হলো copy_abs()। এটি দশমিক সংখ্যা থেকে निरপেক্ষ মান পাওয়ার জন্য ব্যবহৃত হয়। দ্বিতীয় মেথড হলো copy_negate(), এটি আসল সংখ্যা নেগেট করে দশমিক সংখ্যা কপি করতে ব্যবহৃত হয়। তৃতীয় ফাংশন হলো copy_sign()। এই মেথড প্রথম আর্গুমেন্টটি প্রিন্ট করে, দ্বিতীয় আর্গুমেন্ট থেকে সাইন लेकर।
উদাহরণ কোড
# copy_abs(), copy_negate() এবং copy_sign() বাস্তবায়ন
import decimal
my_dec = decimal.Decimal(-25.36)
print(my_dec)
# निरপেক্ষ মান কপি করুন
temp_dec = my_dec.copy_abs()
print('Absolute is: ' + str(temp_dec))
# নেগেটিভ মান কপি করুন
my_dec = decimal.Decimal(7.26)
temp_dec = my_dec.copy_negate()
print('Negate of 7.26 is: ' + str(temp_dec))
# দ্বিতীয় আর্গুমেন্ট থেকে সাইন কপি করুন প্রথম আর্গুমেন্টে
my_dec = decimal.Decimal(-25.36)
temp_dec = my_dec.copy_sign(decimal.Decimal(12.5))
print('Copy sign from second argument: ' + str(temp_dec))
আউটপুট
-25.3599999999999994315658113919198513031005859375 Absolute is: 25.3599999999999994315658113919198513031005859375 Negate of 7.26 is: -7.2599999999999997868371792719699442386627197265625 Copy sign from second argument: 25.3599999999999994315658113919198513031005859375
max এবং min মেথড
max এবং min দুটি সহজ মেথড। এগুলো যথাক্রমে দুটি সংখ্যার মধ্যে সর্বোচ্চ বা সর্বনিম্ন খুঁজে বের করতে ব্যবহৃত হয়।
উদাহরণ কোড
# max() এবং min() মেথড বাস্তবায়ন
import decimal
my_dec1 = decimal.Decimal(5.3)
print(my_dec1)
my_dec2 = decimal.Decimal(-9.23)
print(my_dec2)
# ন্যূনতম এবং সর্বোচ্চ দেখান
print('Minimum: ' + str(my_dec1.min(my_dec2)))
print('Maximum: ' + str(my_dec2.max(my_dec1)))
আউটপুট
5.29999999999999982236431605997495353221893310546875 -9.230000000000000426325641456060111522674560546875 Minimum: -9.230000000000000426325641456 Maximum: 5.299999999999999822364316060