PJHeinrich: Größenordnung herausfinden; Exponent einer float-Zahl bestimmen?

Hallo liebe Forumgemeinde,

ich arbetie gerade an einem Projekt im Backend einer Software-Umgebung ('SOFiSTiK'). Bei dieser hat sich herausgestellt, dass Multiplikationen, die mit Zahlen <1E-18 durchgeführt werden "einfach so" zu Null gesetzt werden. (Vor ein paar Tagen habe ich eine etwas detailliertere Fragestellung hierzu in das entsprechende SOFiSTiK-Forum geschrieben.)

Nun bin ich die ganze Zeit daran, mir einen 'Workaround' zu überlegen, und hatte hierzu eine Idee, für die ich allerdings den Exponenten einer float-Zahl bestimmen muss, allerdings nicht weiß, wie bzw. ob das möglich ist.

Angenommen, ich berechne exp(46), so ist das 0.4961E+19. - Gibt es hier irgendwie eine Möglichkeit an das "19" zu gelangen, also irgendwie den Exponenten herauszufinden bzw. dessen Größenordnung? Ob es 18, 19 oder 20 ist, spielt einstweilen keine große Rolle ...

Besten Dank im Voraus für Eure Hilfe, pjheinrich

  1. Tach,

    Nun bin ich die ganze Zeit daran, mir einen 'Workaround' zu überlegen, und hatte hierzu eine Idee, für die ich allerdings den Exponenten einer float-Zahl bestimmen muss, allerdings nicht weiß, wie bzw. ob das möglich ist.

    Du suchst den Logarithmus zur Basis 10, bzw. dessen Vorkommastellen: $$\log_{10}(x × 10^y) = \log_{10}(x)+y$$ und mit $$ x < 10 $$ ist $$\log_{10}(x)<1$$.

    mfg
    Woodfighter

    1. @@woodfighter

      Du suchst den Logarithmus zur Basis 10, bzw. dessen Vorkommastellen: $$\log_{10}(x × 10^y) = \log_{10}(x)+y$$ und mit $$ x < 10 $$ ist $$\log_{10}(x)<1$$.

      Und mit $$x < 1$$ ist $$\lg x < 0$$:

      $$\lg \left( 0.4961 \cdot 10^{19} \right) \approx 18.7$$

      Die Vorkommastellen des Zehnerlogarithmus ergeben dann den Exponenten, wenn die Mantisse zwischen 1 und 10 liegt (1 eingeschlossen, 10 ausgeschlossen).

      LLAP 🖖

      --
      Ist diese Antwort anstößig? Dann könnte sie nützlich sein.
      1. Hallo Gunnar Bittersmann,

        Die Vorkommastellen des Zehnerlogarithmus ergeben dann den Exponenten, wenn die Mantisse zwischen 1 und 10 liegt (1 eingeschlossen, 10 ausgeschlossen).

        Die Bedingung sollte imho immer erfüllt sein, falls die Programmiersprache nicht nach wissenschaftlicher Notation (nur Vielfache von 3 als Exponent) arbeitet.

        Bis demnächst
        Matthias

        --
        Signaturen sind bloed (Steel) und Markdown ist mächtig.
        1. Hallo,

          Die Vorkommastellen des Zehnerlogarithmus ergeben dann den Exponenten, wenn die Mantisse zwischen 1 und 10 liegt (1 eingeschlossen, 10 ausgeschlossen).

          Die Bedingung sollte imho immer erfüllt sein, falls die Programmiersprache nicht nach wissenschaftlicher Notation (nur Vielfache von 3 als Exponent) arbeitet.

          als "wissenschaftliche Notation" kenne ich eigentlich das, was Gunnar beschreibt - nämlich mit der Mantisse im Bereich [1 .. 10[, während mir das, was du meinst, als Techniker- oder Ingenieur-Notation geläufig (und beliebt) ist.

          So long,
           Martin

          1. Hallo Der Martin,

            als "wissenschaftliche Notation" kenne ich eigentlich das, was Gunnar beschreibt - nämlich mit der Mantisse im Bereich [1 .. 10[, während mir das, was du meinst, als Techniker- oder Ingenieur-Notation geläufig (und beliebt) ist.

            Recht hassu.

            ENG|SCI war die Taste auf dem Taschenrechner. Deshalb hab ich die technische Notatation (von engineering, aber wem sag ich das?) eine Zeit lang fälschlich als englische Notation bezeichnet.

            Bis demnächst
            Matthias

            --
            Signaturen sind bloed (Steel) und Markdown ist mächtig.
      2. Vielen Dank Euch beiden für Eure Antworten!

        Das hat mir weitergeholfen. Auch wenn ich das ursächliche Problem leider doch nicht so - wie gedacht - lösen konnte. (Das gesamte Problem habe ich mal hier beschrieben - vielleicht hat ja jemand von Euch Spaß/Muse/Wissen zum mitdenken daran ... ) =)

        Liebe Grüße, pjheinrich