double und float

  • Was isn hier los:



    Hab mich heute mal mit Type Hinting beschäftigt. Dabei ist mir das aufgefallen.
    Liegt nicht an mir, oder?

  • Float und Double sind 2 unterschiedliche Typen, wenn auch beide Gleitkommazahlen bezeichnen.
    Man kann in PHP keine wirklich Typen echte Vergleiche nutzen.


    Ich kam darauf, weil ich beim Thema Type Hinting auf eine Klasse im Web gestoßen bin, mit der man das Verhalten simulieren kann.
    So wie in anderen Sprachen zB eine var
    int a = 0;
    definiert werden kann.


    In PHP wurde ja Type Hinting eingeführt -- allerdings sehr dürftig:

    Zitat

    Type Hints können nur vom Typen object und (seit PHP 5.1) array sein.


    Ich hätte mir zB

    PHP
    function name (string $str, double $a, float $f) {}


    gewünscht.


    Die Klasse, die das simuliert, hat funktionert. Dabei wurden Objekte genutzt.
    Mach allerdings keinen Sinn eine Simulation zu nutzen, da es verlangsamt und der Code nicht einfach wiederverwendbar ist.

  • Das das verschiedene Typen sind ist schon klar, jetzt ist mir auch aufgefallen was du meinst...
    Ich vermute folgendes Problem:
    Die Typen double und float unterscheiden sich im grunde nur in einem Punkt: ihrer Genauigkeit. Da dein Wert 1.2 theoretisch sowohl als Float als auch als double dargestellt wird, entscheidet php (das ist mienes erachtens der einzige fehler) dir "double" auszugeben, statt den geringeren float zu wählen.


    Für das System dahinter, spielt das aber keinerlei Rolle, da intern sowieso alle Daten als double gespeichert werden. Zwar würde vermutlich beim Zwang auf Float von einer double Zahl aus, einige Stellen verloren gehen, aber nur beim Anwender, für das System dahinter bleibt die Zahl trotzdem ein double.


    Ich glaube aber ehrlich gesagt, das das soweiso nur sehr begrenzt nutzbar ist... Der Speicherplatz nimmt sich absolut nichts, somit kann man es maximal zur Begrenzung bei Rechnungen nutzen, was eher kontraproduktiv ist, da man die Rechnung als float ja mit geringerer Genauigkeit durchführen würde, statt das System mit der vollen verfügbaren Genauigkeit rechnen zu lassen...


    Ich studiere Informatik, und wir hatten bzgl. Zahlendarstellungen einige sehr, naja ausführliche, Diskusionen... :D


    Die Frage ist eher ob das was du dort festgestellt hast irgendwelche Probleme erzeugen würde...


    Ich für mich sehe im TypeHinting nur wenig nutzen, bzw. jetzt insbesondere im bezug auf Zahlendarstellungen...


    MfG Kanu

  • Type Hinting wäre (für mich) schön, um Parameter zu prüfen.
    Es ist ja schon mal was, dass wie
    function name (array $arr)
    nutzen können.
    Also brauchen wir in der func nicht auf
    if( is_array($arr) )
    prüfen, da PHP ja nen Fatal raus haut. ...


    Die Andere Seite: ich würde ungern wie zB in C die vars behandeln müssen.
    Da ist das "Auto-type" von PHP schon ganz gut.


    jedenfalls - was man bei PHP vermeiden sollte ist:

    PHP
    function name ($para) {
        if (gettype($para) != 'float') {
            // emsg "das ist kein float" -- ist es aber doch ... also eben ein double =)
        }
    }
  • Ja okay, ich kann verstehen wofür es von Nutzen sein kann ^^


    Es ist ein Anfang, vlt. wird das ja in den nächsten Versionen noch verbessert ;)


    Jop, das soltle man dementsprechend vermeiden... :)


    Kanu

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!