Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Chuyển đổi số thực thập phân sang nhị phân trong Python

Tương tự chuyển sang bát phân, nhưng cơ số là 2. Tách phần nguyên và phần thập phân, chuyển đổi riêng.

Ví dụ minh họa

Số: 22.625
Phần nguyên 22 → nhị phân: 10110
Phần thập phân 0.625 → nhị phân: 0.101
Kết quả: 10110.101

Code (đã sửa lỗi: dùng *2 thay vì *8)

def float_to_binary(my_number, places=3):
    my_whole, my_dec = str(my_number).split(".")
    my_whole = int(my_whole)
    my_dec = int(my_dec)
    
    res = bin(my_whole).lstrip("0b") + "."
    for _ in range(places):
        my_whole, my_dec = str((decimal_converter(my_dec)) * 2).split(".")
        my_dec = int(my_dec)
        res += my_whole
    return res

def decimal_converter(num):
    while num > 1:
        num /= 10
    return num

# Test
n = input("Nhập số thực: ")
p = int(input("Số chữ số nhị phân sau dấu phẩy: "))
print(float_to_binary(n, places=p))

Ví dụ chạy

Nhập số thực: 2.34
Số chữ số: 3
Kết quả: 10.010  (xấp xỉ, do 0.34 không diễn tả chính xác được trong nhị phân hữu hạn)

Lưu ý quan trọng

  • Code gốc bài viết nhầm dùng * 8 thay vì * 2 cho nhị phân – đã sửa trong phiên bản này.
  • Nhiều số thập phân không biểu diễn chính xác trong nhị phân (ví dụ 0.1, 0.34), kết quả là xấp xỉ.
  • Python có sẵn float.hex() và module struct cho chuyển đổi chính xác theo IEEE 754.