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 bát phân trong Python

Chuyển đổi số float thập phân sang hệ bát phân (octal): tách phần nguyên và phần thập phân, chuyển đổi riêng rồi ghép lại.

Thuật toán

  1. Phần nguyên: Chia liên tiếp cho 8, lấy phần dư ngược lại.
  2. Phần thập phân: Nhân liên tiếp với 8, lấy phần nguyên từng bước.
  3. Ghép hai phần với dấu chấm.

Code

def float_convert_octal(my_number, places=3):
    my_whole, my_dec = str(my_number).split(".")
    my_whole = int(my_whole)
    my_dec = int(my_dec)
    
    res = oct(my_whole).lstrip("0o") + "."
    for _ in range(places):
        my_whole, my_dec = str((decimal_converter(my_dec)) * 8).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ố thập phân kết quả: "))
print(float_convert_octal(n, places=p))

Ví dụ

Nhập số thực: 6.89
Số chữ số thập phân: 12
Kết quả: 6.707534121727

Lưu ý

  • Số thập phân trong hệ bát phân thường là vô tận (tương tự 1/3 trong thập phân), nên cần giới hạn số chữ số (places).
  • Hàm decimal_converter chuẩn hóa phần thập phân về dạng 0.xxx trước khi nhân 8.