How to Round a Number to Two Decimal Places in PHP?

Problem:

You have a number (ex. 549.767, 549, or .549). You want to round the number to 2 decimal places (ex. 549.77, 549.00, or 0.55).

 

Solution:

You can do it in few ways.

Method 1: Using number_format() function

Using number_format(), you can format a number. The first parameter of the function is the number to be formatted. The second parameter formats the first parameter with the number of decimals it shows and add a dot in front of it.

In the following example below, each number will be rounded to the 2 decimal places after the dot.

<?php
$number = 549.767;
echo number_format($number, 2). "<br />";

$number = 549;echo number_format($number, 2) . "<br />";
$number = .549;echo number_format($number, 2);
?>

[wpdm_file id=73]

Output:
549.77
549.00
0.55

 

Method 2: Using round() function

round() function rounds the first parameter (which is a float) to the number of digits after decimal point mentioned by the second parameter.

<?php
$number = 549.767;
echo round($number, 2). "<br />";

$number = 549;
echo round($number, 2). "<br />";

$number = .549;
echo round($number, 2). "<br /><br />";
?>

[wpdm_file id=74]

Output:
549.77
549
0.55

Note: As round() function rounds floats, the number 549 above has not been formatted with decimal point.

 

Method 3: Using sprintf() function

sprintf() function can change the format of a number to another. The first parameter of this function sets the rules on how to format a number and the second parameter is the number itself.

The first parameter which is called format specifier starts with a percentage (%) sign. Then the dot and the 2 comes which is precision specifier that tells 2 decimal digits should be displayed after the dot. The f at last tells to treat the number as a float.

<?php
$number = 549.767;
$number = sprintf('%.2f', $number). "<br />";
echo $number;

$number = 549;
$number = sprintf('%.2f', $number) . "<br />";
echo $number;

$number = .549;
$number = sprintf('%.2f', $number) . "<br /><br />";
echo $number;
?>

[wpdm_file id=75]

Output:
549.77
549.00
0.55

 

Method 4: Using printf() function

printf() function works similarly to the sprintf() function except that the printf() function prints a number directly to the screen, on the other hand, sprint() function allows you to save the formatted number to a variable.

See the code below-

<?php
$number = 549.767;
printf('%.2f', $number);
echo "<br />";

$number = 549;
printf('%.2f', $number);echo "<br />";

$number = .549;printf('%.2f', $number);
echo "<br />";
?>

[wpdm_file id=76]

Output:
549.77
549.00
0.55