我一直參與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