我一直参与a programming contest和one of the problems'输入数据包含一个十进制格式的小数:0.75
就是一个例子。如何在Haskell中将小数部分解析为Rational?
解析成Double
是微不足道的(我可以使用read
),但精度的损失是痛苦的。需要对Double
比较(我不是)非常小心,这似乎是多余的,因为在Haskell中有一个Rational
数据类型。
当试图使用它时,我发现read
a Rational
必须提供以下格式的字符串:numerator % denominator
,这显然没有。
所以,问题是:
什么是解析分数的十进制表示到Rational
最简单的方法?
也应该考虑外部依赖的数量,因为我无法在网上裁判中安装额外的库。
谢谢!这工作。 – Rotsor
如果您想要读取负数:'fst,您可能需要添加'readSigned'。 head $ readSigned readFloat“-3.14”:: Rational' – newacct