Ermitteln der Genauigkeit für ein float und ein double



  • Hallo ihr Lieben,

    ich habe folgendes Problem und zwar:

    Ich habe jetzt schon öfters gelesen, dass ein float eine Genauigkeit von 6 Stellen besitzt und ein double von 15!
    Ich habe bisher noch nicht verstanden wie man auf diese Werte kommt.

    Ich wäre sehr dankbar über eine ausführliche Erklärung bzw. für einen Link auf eine Seite auf der dies in deutsch/englisch ausführlich erklärt wird.

    Vielen Dank 😃

    Gruss



  • Was ist mit https://de.wikipedia.org/wiki/Gleitkommazahl ?

    (Das ist aber kein C Problem.)



  • float und double sind in der Regel als IEEE 754 Single- bzw. Double-Precision implementiert. Eine Zahl xx hat im Dezimalsystem d=log10xd = \log_{10} x Stellen, im Binärsystem b=log2xb = \log_{2} x Stellen. Daraus folgt:

    db=lnxln10lnxln2=ln2ln100,3\frac{d}{b} = \frac{\frac{\ln x}{\ln 10}}{\frac{\ln x}{\ln 2}} = \frac{\ln 2}{\ln 10} \approx 0,3

    Eine IEEE 754 Single-Precision Zahl mit 24 Bit Mantisse entspricht also 240.37.224 \cdot 0.3 \approx 7.2 Dezimalstellen, eine IEEE 754 Double-Precision Zahl mit 53 Bit Mantisse 530.315.953 \cdot 0.3 \approx 15.9 Dezimalstellen...



  • Gemäß Standard brauchst du nichts selber berechnen, dein Compilerhersteller hat die Werte für dich in float.h hinterlegt:

    `FLT_DIG

    DBL_DIG

    LDBL_DIG`



  • DirkB vielen Dank für den Link:
    Ich werde es mir gleich mal durchlesen 🙂
    (Ich muss dir Recht geben das der Beitrag nicht c-spezifisch ist, da habe ich etwas geschludert, sorry)

    Dot auch vielen Dank für deine Antwort 😉 Das beantwortet schonmal meine Frage !


Log in to reply