user1032531
user1032531

Reputation: 26281

Format percentage using PHP

I would like to format 0.45 as 45%.

I know I can just do something like FLOOR($x*100).'%', but wonder if there is a better way (better is defined as more standard and not necessarily faster).

One thought is http://php.net/manual/en/class.numberformatter.php. Is this a better way? Has anyone used it and can you show an example? Thanks

Upvotes: 21

Views: 67294

Answers (2)

Mr. B
Mr. B

Reputation: 2787

You can also use a function.

function percent($number){
    return $number * 100 . '%';
}

and then use the following to display the result.

percent($lab_fee)

Upvotes: 6

Colin M
Colin M

Reputation: 13328

Most likely, you want round instead of floor. But otherwise, that would be the most "standard" way to do it. Alternatively you could use sprintf such as:

sprintf("%.2f%%", $x * 100) which would print the percentage of $x with two decimal points of precision, and a percentage sign afterwards.

The shortest way to do this via NumberFormatter is:

$formatter = new NumberFormatter('en_US', NumberFormatter::PERCENT);
print $formatter->format(.45);

It would be better to do this if your application supports various locales, but otherwise you're just adding another line of code for not much benefit.

Upvotes: 58

Related Questions