Phương thức as_integer_ratio() của kiểu float trả về một tuple hai số nguyên (tử số, mẫu số) sao cho tỷ lệ của chúng chính xác bằng giá trị float ban đầu. Đây là cách biểu diễn chính xác số thực dưới dạng phân số.
Ví dụ 1
float_value = 1.5
integers = float_value.as_integer_ratio()
print(f'{integers[0]} / {integers[1]}')Kết quả
3 / 2
Ví dụ 2: Số thực phức tạp hơn
float_value = 5.3
integers = float_value.as_integer_ratio()
print(f'{integers[0]} / {integers[1]}')Kết quả
5967269506265907 / 1125899906842624
Giải thích: Do bản chất biểu diễn nhị phân IEEE 754 của số thực, các số thập phân đơn giản như 5.3 không thể biểu diễn chính xác, dẫn đến tử/mẫu số rất lớn.
Ứng dụng
- Chuyển đổi số thực sang phân số chính xác cho tính toán ký hiệu (symbolic math).
- Tránh lỗi làm tròn trong tài chính, khoa học.
- Giáo dục: minh họa biểu diễn nhị phân của float.
Kết luận
as_integer_ratio() là công cụ mạnh để lấy biểu diễn phân số chính xác của float. Kết hợp với module fractions.Fraction để có thêm chức năng rút gọn, phép toán phân số.