tutorials.de Buch-Aktion 05/2012
Like Tree3Danke
  • 1 Beitrag von Flex
  • 2 Beitrag von _Grubi
ERLEDIGT
JA
ANTWORTEN
4
ZUGRIFFE
240
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von dwex
    dwex dwex ist offline Mitglied Platin
    Registriert seit
    Apr 2005
    Ort
    Landshut (Niederbayern)
    Beiträge
    695
    Hallo Leute,

    grundsätzlich weis ich ja wie ich eine Flieskommazahl runden kann - jedoch stehe ich jetzt vor dem problem das ich z.B. die Zahl 699.00005 auf 699.01 runden muss und auch 699.00004 auf 699.01

    Wenn ich es mit sprintf("%01.2f", $money) mache dann bekomme ich in jedem Fall 699,00

    Hat jemand eine Idee?
     
    Ich würde mich über die Bewertung meiner Beiträge mit Kurzkommentar sehr freuen!

    Die "dumme Frage" ist gewöhnlich das erste Anzeichen einer völlig neuen Entwicklung!
    -------------------
    Es ist immer Zeit etwas zu verändern ....
    .... das alles so bleibt wie es ist!

    -------------------
    Homepage Landshut
    -------------------
    /voodoo.css
    #meinFeind {position: absolute; bottom: -6ft;}

  2. #2
    Avatar von Flex
    Flex Flex ist offline (aka Felix Jacobi)
    tutorials.de Moderator
    Registriert seit
    Nov 2001
    Ort
    Wuppertal
    Beiträge
    5.295
    Blog-Einträge
    65
    Da das eigentlich eine falsche Rundung ist, müsstest du dir da selbst was schreiben...

    PHP-Code:
    <?php
    function customRound($value$precision 2)
    {
        
    $parts explode('.'$value);
        
    $digit $precision 1;
        
        
    $runs strlen($parts[1]);
        for(
    $i $runs$i 0$i--)
        {
            if(
    $parts[1][$i] >= 5)
            {
                
    $parts[1][$digit] = $parts[1][$digit] + 1;
            }
        }
        
        
    $number $parts[0].'.';
        
    $number .= substr($parts[1], 0$precision);
        
        return 
    $number;
    }

    echo 
    customRound(699.000053);
    ?>
    Das hier funktioniert z. B., ist allerdings einfach kurz hingeschmiert.
    dwex bedankt sich. 
    KIDS Kinderbetreuungsdienst
    Xing

    "When you play the game of thrones, you win or you die. There is no middle ground."
    by Cersei Lannister in "A Game Of Thrones"

  3. #3
    _Grubi _Grubi ist offline Mitglied Gold
    Registriert seit
    Sep 2009
    Beiträge
    216
    Es muss immer auf eine bestimmte Anzahl an Nachkommastellen aufgerundet werden? In den Benutzerkommentaren auf php.net gibt es eine nette Lösung:
    http://de3.php.net/manual/de/function.round.php#84780
    Code php:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    
    function roundUp( $value, $precision=0 )
    {
        // If the precision is 0 then default the factor to 1, otherwise
        // use 10^$precision. This effectively shifts the decimal point to the
        // right.
        if ( $precision == 0 ) {
            $precisionFactor = 1;
        }
        else {
            $precisionFactor = pow( 10, $precision );
        }
     
        // ceil doesn't have any notion of precision, so by multiplying by
        // the right factor and then dividing by the same factor we
        // emulate a precision
        return ceil( $value * $precisionFactor )/$precisionFactor;
    }
    dwex und Napofis bedanken sich. 

  4. #4
    Avatar von dwex
    dwex dwex ist offline Mitglied Platin
    Registriert seit
    Apr 2005
    Ort
    Landshut (Niederbayern)
    Beiträge
    695
    Vielen Dank euch zwei!
     
    Ich würde mich über die Bewertung meiner Beiträge mit Kurzkommentar sehr freuen!

    Die "dumme Frage" ist gewöhnlich das erste Anzeichen einer völlig neuen Entwicklung!
    -------------------
    Es ist immer Zeit etwas zu verändern ....
    .... das alles so bleibt wie es ist!

    -------------------
    Homepage Landshut
    -------------------
    /voodoo.css
    #meinFeind {position: absolute; bottom: -6ft;}

  5. #5
    karl123 karl123 ist offline Mitglied Silber
    Registriert seit
    Nov 2008
    Ort
    Püttlingen (Saarland)
    Beiträge
    91
    Als Ergänzung zur Funktion von Grubi (falls immer auf 2 Nachkommastellen aufgerundet werden muss):
    PHP-Code:
    $zahl ceil($zahl 100) / 100
    Karl
     

Ähnliche Themen

  1. Zahl runden
    Von Alice im Forum PHP
    Antworten: 33
    Letzter Beitrag: 03.06.10, 15:34
  2. Integer -> Runden?
    Von flashray im Forum Visual Basic 6.0
    Antworten: 4
    Letzter Beitrag: 18.01.07, 16:03
  3. kaufmännisch runden
    Von skyhi im Forum PHP
    Antworten: 3
    Letzter Beitrag: 01.02.06, 11:09
  4. C# - Runden
    Von Alexander12 im Forum .NET Datenverwaltung
    Antworten: 1
    Letzter Beitrag: 25.10.05, 17:43
  5. Runden
    Von Nanaki im Forum Visual Basic 6.0
    Antworten: 6
    Letzter Beitrag: 03.02.03, 16:33