Lukas.: php number_format oder ähnliches

Hallo,

eigentlich suche ich eine Funktion in php, die mir:

aus 21,20 --> 21,2 macht aus 21,00 --> 21 macht aus 21,22 --> 21,22 macht

Müßte doch mit einer einzigen Funktion möglich sein, aber mit number_format krieg ichs nicht hin.

L.

  1. Hallo,

    aus 21,20 --> 21,2 macht aus 21,00 --> 21 macht aus 21,22 --> 21,22 macht

    Das ist ungefähr genau das Gegenteil von dem, was man normalerweise benötigt und wofür number_format da ist. Sind es überhaupt Zahlen oder kann man da einfach mit Stringfunktionen beigehen? Wenn noch kein String: in String umwandeln und 0(en) abschneiden.

    Gruß
    Kalk

    1. Hi Kalk,

      echt so kompliziert?

      0en löschen, Komma löschen, usw.?

      Ui...

      1. Hallo,

        echt so kompliziert?

        naja, eigentlich nicht. Wenn du eine Zahl 5.0 per echo ausgibst, wird doch normalerweise 5 ausgegeben. Warum ist das bei dir nicht so?

        Gruß
        Kalk

      2. Tach!

        echt so kompliziert?

        0en löschen, Komma löschen, usw.?

        Ja, wenn die Zahl ein Komma als Dezimaltrenner hat und demzufolge keine Zahl sondern ein String ist, dann braucht es rtrim().

        dedlfix.

  2. <?php
    $a = array(
            '21,20',
            '21,00',
            '21,22'
        );
    
    foreach ($a as $s) echo germanFloatVal($s). "\n";
    
    
    function germanFloatVal($s) {
        $n = floatval( str_replace(',', '.', $s ) );
        return str_replace('.', ',',  strval( $n ) );
    }
    

    Ausführen:

    $ php test.php
    21,2
    21
    21,22
    

    Natürlich geht auch:

    function germanFloatVal($s) { 
        return str_replace('.', ',',  strval( floatval( str_replace(',', '.', $s ) ) ) );
    }
    

    Oder Du nimmst halt die einfachste Lösung:

    <?php
    $a = array(
            '21,20',
            '21,00',
            '21,22'
        );
    
    foreach ($a as $s) echo rtrim ( $s , '0,') . "\n";
    
    1. Ganz schnell mal danke an alle.

      Hab wenig zeit, daher nur ´ganz schnell.

      Ich habe Reginas Lösung zur Hälfte genutzt, was daran liegt, dass es doch bereits ein Floatwert war.

      Sorry, muß leider weg, kanns nicht weiter erläutern und wollt mich nur schnell mal rückmelden.

      L.

      1. was daran liegt, dass es doch bereits ein Floatwert war.

        So aussah wie ein Floatwert. (Punkt als vermeintlicher Dezimaltrenner). Wenn die Aktion nötig war (es also unnötige Kommastellen gab), dann war es definitiv ein String und $float = floatval( $string ); hätte gereicht.