Python. Из десятичной дроби — в обычную
У класса float
есть прекрасный метод as_integer_ratio()
, который представляет десятичную дробь в виде обычной — пары «числитель, знаменатель»:
>>> (0.25).as_integer_ratio()
(1, 4)
>>> (0.5).as_integer_ratio()
(1, 2)
>>> (0.75).as_integer_ratio()
(3, 4)
Так вот. Никогда им не пользуйтесь ツ Потому что:
>>> (0.2).as_integer_ratio()
(3602879701896397, 18014398509481984)
Виной всему стандарт представления дробных чисел IEEE 754, который реализует float.
Используйте Decimal
:
>>> from decimal import Decimal
>>> Decimal("0.2").as_integer_ratio()
(1, 5)
Уверен, вы и так это знаете. Просто на всякий случай ツ
★ Подписывайтесь на новые заметки.