在Haskell中是否有任何方法可以获得常数,该常数是可以用双精度表示的最大和最小可能的正有理数大于零?
答案 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)