Hinterm Komma aufrunden

oezer

Erfahrenes Mitglied
Hallo,

eine Frage bzgl. der Funktion round..

ich habe als Beispiel einige Zahlen mit Kommas 27,99 | 19,9 | 24,99 | 29,9 | etc. diese möchte ich aufgerundet haben mit 2 Kommastellen.. sprich die 19,9 soll 19,90 aussehen.. aber irgendwie rundet er mir diese ohne komma auf..

PHP:
$data[1] = str_replace(",",".", $data[1]);
round($data[1], 2)

Hat einer eine idee..? Nutze ich hier die falsche funktion?

grüße
oezer
 
Ich vermute mal das von data1 bei dir von Grund an eine Zahl kommt die nur 1 nachkomma stelle hat.

Versuch mal das

PHP:
echo sprintf("%01.2f", $data[1]);

Mfg Splasch
 
Hi Splash,

daraus macht er folgende Zahl... 19.919.90 welche mal 19.9 war.. aber ist schon nah dran an der lösung.. zumal er hinten die 0 anhängt..

ich werde mir mal die funktion genauer anschauen..
für was steht denn %01.2f ?

oezer
 
http://at.php.net/manual/de/function.sprintf.php

% - ein Prozent-Zeichen ("%"). Es ist kein Argument erforderlich.
b - das Argument wird als Integer angesehen und als Binär-Wert ausgegeben.
c - das Argument wird als Integer angesehen und das entsprechende ASCII-Zeichen wird ausgegeben.
d - das Argument wird als Integer angesehen und ein Dezimalwert (signed) ausgegeben.
u - das Argument wird als Integer angesehen und ein Dezimalwert (unsigned) ausgegeben.
f - das Argument wird als float angesehen und eine Fließkomma-Zahl ausgegeben.
o - das Argument wird als Integer angesehen und und als Oktalzahl ausgegeben.
s - das Argument wird als String angesehen und auch als solcher ausgegeben.
x - das Argument wird als Integer angesehen und als Hexadezimal-Wert ausgegeben (mit Kleinbuchstaben).
X - das Argument wird als Integer angesehen und als Hexadezimal-Wert ausgegeben (mit Großbuchstaben).



Mfg Splasch
 
also ich bin leider nicht wirklich weitergekommen. Würde das ganze Sinn machen wenn ich meine Zahlen mit 100 multipliziere und dann mit einer bestimmten Funktion bis auf 2 Komma stellen alles abschneide?
 
okay jetzt habe ich folgendes Problem.. mit..

PHP:
$data[1] = str_replace(",",".", $data[1]);
echo sprintf("%01.2b", $data[1]);
number_format($data[1], 2, '.', '')

erhalte ich eine korrekte Aufwertung der Zahlen von 19,9 auf 19.90 aber bei den Werten wo ich bereits eine korrekte Summe hatte von z.B. 34,99 erhalte ich nun.. 34.990

obwohl mit number_format nur 2 kommastellen angezeigt werden sollte.. wird hinter die Zahl noch eine 0 angehängt..

Kann ich die letzte Ziffer nicht einfach abschneiden?

oezer
 
PHP:
<?php
$numbers = array( '27,99',  '19,9', '24,99', '29,9', '34,783468' );
$numbersNewFormat = array();
foreach( $numbers as $val )
{
    $numbersNewFormat[] = number_format( str_replace(',','.', $val), 2 );
}
?>
<pre>
<?php
print_r( $numbersNewFormat );
?>
</pre>
Code:
Array
(
    [0] => 27.99
    [1] => 19.90
    [2] => 24.99
    [3] => 29.90
    [4] => 34.78
)
 
Zuletzt bearbeitet:
danke für die antwort loomes.. aber ich bekomme es leider immer noch nicht hin :(

habe jetzt folgendes gemacht..

PHP:
        echo "<td>".
        $numbers = array($data[1]);
        $numbersNewFormat = array();
        foreach( $numbers as $val )
        {
                $numbersNewFormat[] = number_format( str_replace(',','.', $val), 2 );
        }
        print_r ( $numbersNewFormat )
        ."</td>";

Ausgabe ist folgende:

Code:
ArrayArray ( [0] => 29.90 )

Ich bin was PHP angeht leider noch nicht fit.. ich hab nur herausgefunden das print_r ein array ausgibt so das man das ganze lesen kann..

ein:
PHP:
echo ($numbersNewFormat)

t hier leider auch nicht.. gibt es eine bestimmte Funktion wo man Arrays normal ausgeben lassen kann?
 
Du könntest das ganze entweder direkt ausgeben per echo:
PHP:
        foreach( $numbers as $val )
        {
                echo number_format( str_replace(',','.', $val), 2 );
        }
Oder nochmal eine Schleife starten:
PHP:
        foreach( $numbersNewFormat as $data )
        {
            echo $data;
        }
Oder die neu formatierten Daten als String speichern:
PHP:
        echo "<td>".
        $numbers = array($data[1]);
        $numbersString = '';
        foreach( $numbers as $val )
        {
                $numbersString .= number_format( str_replace(',','.', $val), 2 );
        }
        echo $numbersString;
        ."</td>";
Kommt ja auch darauf an, wie die Ausgabe aussehen soll.
 
Zuletzt bearbeitet:
Zurück