Haskell最小/最大双常数

时间:2009-11-23 00:04:24

标签: haskell floating-point constants

在Haskell中是否有任何方法可以获得常数,该常数是可以用双精度表示的最大和最小可能的正有理数大于零?

2 个答案:

答案 0 :(得分:7)

maxNonInfiniteFloat :: RealFloat a => a -> a
maxNonInfiniteFloat a = encodeFloat m n where
    b = floatRadix a
    e = floatDigits a
    (_, e') = floatRange a
    m = b ^ e - 1
    n = e' - e

minPositiveFloat :: RealFloat a => a -> a
minPositiveFloat a = encodeFloat 1 $ fst (floatRange a) - floatDigits a

答案 1 :(得分:2)

GHC.Float的功能为[floatRange][2]

  

floatRange :: a - > (Int,Int)来源

     

一个常数函数,返回指数可能假设的最低值和最高值

应该是你想要的。