Я принимал участие в соревновании по программированию и одна из проблем 'входные данные включали дробное число в десятичном формате: 0.75
является одним из примеров.
Анализ этого в Double
тривиален (я могу использовать read
для этого), но потеря точности болезненна. Нужно быть очень осторожным с Double
сравнениями (я не был), что кажется избыточным, так как в Haskell есть тип данных Rational
.
Пытаясь использовать это, я обнаружил, что для read
a Rational
нужно предоставить строку в следующем формате: numerator % denominator
, которого у меня, очевидно, нет.
Итак, вопрос:
Какой самый простой способ разбить десятичное представление дроби на Rational
?
Также следует учитывать количество внешних зависимостей, поскольку я не могу установить дополнительные библиотеки в онлайн-судье.