Rot*_*sor 10 parsing haskell decimal rational-numbers
我一直在参加一个编程竞赛,其中一个问题的输入数据包括十进制格式的小数:0.75
就是一个例子.
解析它Double
是微不足道的(我可以用read
它),但精度的损失是痛苦的.人们需要非常小心地进行Double
比较(我没有),这似乎是多余的,因为Rational
在Haskell中有一个数据类型.
当试图使用它时,我发现read
一个Rational
人必须提供以下格式的字符串:numerator % denominator
,我显然没有.
所以,问题是:
解析分数的十进制表示形式的最简单方法是什么Rational
?
还应考虑外部依赖项的数量,因为我无法在在线评判中安装其他库.
Yit*_*itz 18
你想要的功能是Numeric.readFloat
:
Numeric Data.Ratio> fst . head $ readFloat "0.75" :: Rational
3 % 4
Run Code Online (Sandbox Code Playgroud)