অ্যালগরিদম
- পূর্ণসংখ্যা অংশ: ৮ দিয়ে বারবার ভাগ করে ভাগশেষ সংগ্রহ → উল্টো ক্রমে পড়লে অক্টাল।
- ভগ্নাংশ অংশ: ৮ দিয়ে বারবার গুণ করে পূর্ণসংখ্যা অংশ সংগ্রহ → ক্রম대로 পড়লে অক্টাল।
- দুটি অংশ একসাথে জোড়া দিতে দশমিক বিন্দু দিয়ে।
উদাহরণ কোড
def decimal_converter(num):
"""ভগ্নাংশকে ১-এর চেয়ে ছোট করতে ১০ দিয়ে ভাগ"""
while num > 1:
num /= 10
return num
def float_to_octal(number, places=3):
whole_str, dec_str = str(number).split(".")
whole = int(whole_str)
dec = int(dec_str)
# পূর্ণসংখ্যা অংশ -> অক্টাল
res = oct(whole).lstrip("0o") + "."
# ভগ্নাংশ অংশ -> অক্টাল
for _ in range(places):
dec = decimal_converter(dec) * 8
whole_part, dec_str = str(dec).split(".")
dec = int(dec_str)
res += whole_part
return res
# ড্রাইভার
n = input("Enter the floating point value: ")
p = int(input("Enter the number of decimal places: "))
print(float_to_octal(n, places=p))
নমুনা আউটপুট
Enter the floating point value: 6.89 Enter the number of decimal places of the result: 12 6.707534121727
গভীর ব্যাখ্যা
oct(whole)পাইথন বিল্ট-ইন দিয়ে পূর্ণসংখ্যা অক্টালে কনভার্ট।decimal_converterভগ্নাংশকে ০.৮৯ → ০.০৮৯ → ০.০০৮৯ এনেছে যাতে গুণ করার সময় সঠিক পূর্ণসংখ্যা অংশ পাওয়া যায়।- লুপটি
placesবার চলে প্রিসিশন নিয়ন্ত্রণ করে।
সতর্কতা
ফ্লোটিং পয়েন্ট প্রিসিশন সমস্যায় শেষের কিছু ডিজিট ভুল হতে পারে। বেশি প্রিসিশনের জন্য decimal মডিউল ব্যবহার করুন।