在Haskell中解析和读取浮点值

Fop*_*tin 0 parsing haskell

我正在使用haskell进行解析,我想解析以这种方式表示的时间戳值

946685561.618847
Run Code Online (Sandbox Code Playgroud)

我没有问题来识别(解析)它,但我的问题是关于结果的类型.我想到两种情况:

  1. Haskell中是否存在小数类型,以便结果可以与小数值相关联?
  2. 如果不是这种情况那么如何存储这个值,因为Int范围从-2 29到2 29 - 1?

Tik*_*vis 6

实际上有多种小数类型 - 甚至还有整个Fractional类.

最常用的是a Double,它是一个双精度浮点数.您也可以使用Float单精度.

另一种方法是使用Rational类型,它允许您以2的比例存储数字Integer.(巧合的是,它Integer是一个无界的整数类型.Int是有界版本的名称.)

这些类型(Double,FloatRational)有利于合理的存储值.如果您只想存储一个大的整数值,请使用Integer无限制的值.(也就是说,它可以存储任意大小的整数.)