在Haskell中有没有办法获取可以用双精度浮点数表示的最大和最小正有理数常量?
在Haskell中有没有办法获取可以用双精度浮点数表示的最大和最小正有理数常量?
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
Prelude.floatRange
适用于所有class RealFloat
的实例,包括Double
。 - ephemient