কম্পিউটার টিউটোরিয়াল

পাইথনে ফ্লোট ডেসিমেলকে অক্টালে কনভার্ট করা


অ্যালগরিদম

  1. পূর্ণসংখ্যা অংশ: ৮ দিয়ে বারবার ভাগ করে ভাগশেষ সংগ্রহ → উল্টো ক্রমে পড়লে অক্টাল।
  2. ভগ্নাংশ অংশ: ৮ দিয়ে বারবার গুণ করে পূর্ণসংখ্যা অংশ সংগ্রহ → ক্রম대로 পড়লে অক্টাল।
  3. দুটি অংশ একসাথে জোড়া দিতে দশমিক বিন্দু দিয়ে।

উদাহরণ কোড


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 মডিউল ব্যবহার করুন।

  1. হেক্সাডেসিমেল স্ট্রিংকে দশমিকে রূপান্তর করার পাইথন প্রোগ্রাম

  2. পাইথন প্রোগ্রাম দিয়ে দশমিক সংখ্যাকে বাইনারি নম্বরে রূপান্তর

  3. পাইথনে ডেসিমেল থেকে বাইনারি নম্বর কনভার্ট করা

  4. পাইথনে ডেসিমেলকে বাইনারি, অক্টাল ও হেক্সাডেসিমেলে কনভার্ট করা