9 Stimmen

Haskell Minimum/Maximum Double Konstante

Gibt es eine Möglichkeit, in Haskell die Konstante zu ermitteln, die die größte und kleinste mögliche positive rationale Zahl größer als Null ist, die durch Doppelzahlen dargestellt werden kann?

9voto

ephemient Punkte 189038
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

1voto

ire_and_curses Punkte 65821

GHC.Float hat die Funktion [floatRange][2] :

floatRange :: a -> (Int, Int) Quelle

eine konstante Funktion, die den niedrigsten und höchsten Wert zurückgibt, den der Exponent annehmen kann

was Sie ja auch wollen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X