2010-06-22 3 views
7

Ist es möglich, eine Dezimalzahl auf die nächsten 0,5 mit PHP wie dies abzurunden:PHP Runde Dezimalzahlen

number | round 
---------------- 
1.29 | 1.50 
2.03 | 2.00 
1.43 | 1.50 
1.13 | 1.00 
11.38 | 11.50 

ich versuchte:

$rnd= round($number,2); 

aber ich Dezimalzahlen, wie die in dem Spalte "Nummer" oben.

+0

Warten, welche Spalte ist die Eingabe und welche ist die Ausgabe? –

+0

Angenommen 1.73 -> 2? –

+1

Ihr Ergebnis ist die Rundung auf das nächste Hundertstel, wie Sie angegeben haben. Aber du meintest nicht, was du gesagt hast. – plor

Antwort

16
function round_to_nearest_half($number) { 
    return round($number * 2)/2; 
} 
+0

Was ist das $ f? Und Sie brauchen nicht die Genauigkeit, wenn es 0 ist. – plor

+0

Funktion round_to_nearest_half ($ original) {zurück (Runde ($ Original * 2)/2);} Würde mehr wie es sein! – RobertPitt

+0

@plor Ja, ich änderte meine Meinung über den Variablennamen auf halbem Weg. Und ja, du hast Recht, du brauchst das zweite Argument nicht, ich habe nur die Syntax gewählt, die das OP benutzt hat. – Artefacto

-2

Sie will nicht bereits jede Funktion für diese PHP-Funktion runde schreiben haben die Möglichkeit, im Modus ein drittes Argument der Rundenfunktion ist. für mehr Referenz PHP Round Function

+2

Nein, hat es nicht. Das dritte Argument in der Funktion round() bestimmt, wie diese Funktion Hälften runden soll. 'Runde (1.5, 0, PHP_ROUND_HALF_UP); // 2' 'Runde (1.5, 0, PHP_ROUND_HALF_DOWN); // 1' 'Runde (1.5, 0, PHP_ROUND_HALF_EVEN); // 2' 'Runde (1.5, 0, PHP_ROUND_HALF_ODD); // 1' 'Runde (1.55, 1, PHP_ROUND_HALF_UP); // 1,6' 'Runde (1.55, 1, PHP_ROUND_HALF_DOWN); // 1,5' 'Runde (1.55, 1, PHP_ROUND_HALF_EVEN); // 1,6' 'Runde (1.55, 1, PHP_ROUND_HALF_ODD); // 1,5' –