Rolf B: Float binär darstellen

Beitrag lesen

problematische Seite

Hallo Graf Bit,

wenn Du die interne Repräsentation einer Variablen in PHP abrufen willst, dann solltest Du den Gedanken gleich wieder streichen. Abgesehen davon bietet Dir PHP, solange Du nicht selbst eine Erweiterung programmierst, keinen Zugang zu den internen Strukturen.

Nikita Popov von Jetbrains (die Macher von PHPStorm) hat in den letzten Jahren wenig gebloggt, aber: er hat 2015 zwei ausführliche Artikel über die interne Ablage von PHP 7 Variablen geschrieben und es auch mit PHP 5 verglichen.

TL;DR: Diese Speicherung ist versionsabhängig und kann sich mit jedem PHP Release ändern.

Aber um dem double-Problem auf die Spur zu kommen: PHP führt bei der String-Umwandlung eines double-Wertes offenbar selbst schon eine Rundung durch, um diese winzig kleinen IEEE-754 Abweichungen zu kompensieren. Wenn Du diese Rundung aushebeln willst, kannst Du printf statt echo verwenden (oder sprintf, wenn Du es in einem String speichern statt ausgeben willst):

printf("%.53f", 42.02);
// Schreibt 42.02000000000000312638803734444081783294677734375000000

Das passt zu dem, was der binaryconverter erzeugt hat, den ich verlinkt hatte.

Rolf

--
sumpsi - posui - obstruxi
0 47

Brett vorm Kopf. Finde den Fehler nicht.

Joachim
  • php
  1. -1
    Operator
    1. 0
      dedlfix
    2. 0
      Graf Bit
      1. 0
        Der Martin
      2. 0
        Rolf B
        1. 0
          Der Martin
        2. 0

          Float binär darstellen

          Graf Bit
          • datenvisualisierung
          • php
          1. 0
            Rolf B
  2. 0
    Erik K.
  3. 0
    Der Martin
    1. 0
      Joachim
      1. 0
        Der Martin
        1. 0
          Joachim
          1. 0

            Brett vorm Kopf. Finde den Fehler nicht. Oder verstehe settype nicht. :-/

            Joachim
            1. 0
              dedlfix
              1. 0
                Joachim
                1. 0
                  Rolf B
        2. 0
          Joachim
          1. 0
            Der Martin
            1. 0
              Joachim
      2. 0
        encoder
        1. 0
          Rolf B
          1. 0
            encoder
  4. 0
    Rolf B
    1. 0
      Der Martin
      • php
      • selfhtml-wiki
      1. 0
        Rolf B
        1. 0
          Der Martin
          1. 0
            Matthias Apsel
        2. 0
          Matthias Apsel
      2. 0
        Matthias Apsel
        1. 0
          Rolf B
    2. 0
      Joachim
      1. 0
        Joachim
      2. 2
        Der Martin
        1. 0
          Joachim
      3. 2
        Rolf B
        1. 0
          Der Martin
          1. 0
            Matthias Apsel
            • sonstiges
            1. 0
              Rolf B
              1. 0
                Der Martin
        2. 0
          Joachim
          1. 0
            Der Martin
        3. 0
          Tabellenkalk
          1. 0
            Der Martin
            1. 0
              MudGuard
          2. 0
            Rolf B