Ankündigung

Einklappen
Keine Ankündigung bisher.

Fließkommaprobleme nicht unter PHP - Wunder oder Schein?

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Fließkommaprobleme nicht unter PHP - Wunder oder Schein?

    Da ich mich einige Zeit im Rahmen von Qualitätssicherungsarbeiten mit der Problematik von Fließkommazahlen beschäftigt habe wundert mich das PHP das Problem nicht aufweist, was eigentlich nicht sein kann - meiner Meinung nach nur länger aufgeschoben wird.

    In einen kurzen Beispiel zeige ich kurz welches eigentliche Problem in PH nicht auftritt. Selbst die Rückgabe wird noch zusätzlich auf float gecastet um sicherzugehen das float als Datentyp eingehalten wird:

    PHP-Code:
    <?php
    function get_float($fValue)
    {
        return 
    $fValue;
    }

    $fZahl = (float) get_float(1.4);
    $fZahl -= 0.2;


    if(
    $fZahl == 1.2)
    {
        print(
    "Die Fließkomma Erleuchtung!");
    }
    else
    {
        print(
    "Doch eher ein Schein");
    }
    ?>

    Aus welchem Grund arbeitet PHP bei der Fließkommeberechnung anders als C oder C++, in diesem Beispiel wird zwar auf Gleichheit geprüft allerdings nicht der else-Part genommen.

    Wer das ganze als C Stück sich ansehen will sollte folgendes komilieren:

    Code:
    #include <stdio.h>
    
    int main()
    {
        float fZahl;
        
        fZahl = 1.4;
        fZahl -= 0.2;
        
        if(fZahl == 1.2)
        {
             printf("Die Erleuchtung: %f\n", fZahl);
             system("pause");
             
             return 0;
        }
        else
        {
             printf("Die Taeuschung: %f\n", fZahl);
             system("pause");
             
             return 1;
        }
    }

  • #2
    In diesem Fall ist das Problem verschoben, weil PHP doubles benutzt, die deinem C-Programm als Ersatz für float auch auf die Sprünge helfen.
    mod = master of disaster

    Kommentar


    • #3
      Wie ich das Problem in meinen C Beispiel verschieben kann ist mir schon bewusst

      Allerdings wundert mich dann in PHP das es beispielsweise als Typenprüfung is_float() und is_double() gibt wenn Fließkommazahlen in PHP generell als double behandelt werden. Naja...

      Kommentar


      • #4
        Hallo Profi
        Steht doch im Handbuch.
        http://www.php.net/manual/en//function.is-double.php
        Description
        This function is an alias of: is_float().
        und hhttp://www.php.net/manual/en/language.types.float.php

        Kommentar


        • #5
          Altlast.
          mod = master of disaster

          Kommentar

          Lädt...
          X