অ্যালগরিদম
- পূর্ণসংখ্যা অংশ: ২ দিয়ে বারবার ভাগ করে ভাগশেষ সংগ্রহ → উল্টো ক্রমে পড়লে বাইনারি।
- ভগ্নাংশ অংশ: ২ দিয়ে বারবার গুণ করে পূর্ণসংখ্যা অংশ সংগ্রহ → ক্রম대로 পড়লে বাইনারি।
- দুটি অংশ একসাথে জোড়া দিতে দশমিক বিন্দু দিয়ে।
উদাহরণ: ২২.৬২৫
- ২২ → বাইনারি: ১০১১০
- ০.৬২৫ → ০.৬২৫×২=১.২৫ → ১; ০.২৫×২=০.৫ → ০; ০.৫×২=১.০ → ১ → ০.১০১
- ফলাফল: ১০১১০.১০১
উদাহরণ কোড (সংশোধিত)
def decimal_converter(num):
while num > 1:
num /= 10
return num
def float_to_binary(number, places=3):
whole_str, dec_str = str(number).split(".")
whole = int(whole_str)
dec = int(dec_str)
# পূর্ণসংখ্যা অংশ -> বাইনারি
res = bin(whole).lstrip("0b") + "."
# ভগ্নাংশ অংশ -> বাইনারি
for _ in range(places):
dec = decimal_converter(dec) * 2 # ৮ এর বদলে ২
whole_part, dec_str = str(dec).split(".")
dec = int(dec_str)
res += whole_part
return res
# ড্রাইভার
n = input("Enter floating point value: ")
p = int(input("Enter the number of decimal places: "))
print(float_to_binary(n, places=p))
নমুনা আউটপুট
Enter floating point value: 2.34 Enter the number of decimal places of the result: 3 10.010
দ্রষ্টব্য: মূল কোডে * 8 ছিল যা ভুল; বাইনারির জন্য * 2 হতে হবে। উপরের কোডে সংশোধন করা হয়েছে।
বিকল্প: পাইথন বিল্ট-ইন (পূর্ণসংখ্যা অংশ)
# পূর্ণসংখ্যা অংশের জন্য
bin(22) # '0b10110'
# ভগ্নাংশ অংশের জন্য ম্যানুয়াল পদ্ধতি বা fractions.Fraction ব্যবহার করুন।