By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
454,406 Members | 1,504 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 454,406 IT Pros & Developers. It's quick & easy.

PHP round() bug?

P: n/a
<?
$a=1.5345493;

$b=round($a,2);

echo "b: ".$b;
?>

This code should return "b: 1.54", but instead returns "b: 1.53". Can
anyone else confirm this?

Also, does anyone have a way around this issue?

PHP 4.3.6
Apache 1.3.33
MySQL 3.23.49

Jul 17 '05 #1
Share this Question
Share on Google+
3 Replies


P: n/a
db_guy wrote:
<?
$a=1.5345493;

$b=round($a,2);

echo "b: ".$b;
?>

This code should return "b: 1.54", but instead returns "b: 1.53". Can
anyone else confirm this?

Also, does anyone have a way around this issue?


Why should it return 1.54?

1.5345493 rounded to two decimal places *should* give 1.53

The numbers 0 to 4 are rounded down, and 5 to 9 are rounded up.

The third number after the decimal place is a 4 which would indicate the
number should be rounded down, leaving you with 1.53.

--
Chris Hope | www.electrictoolbox.com | www.linuxcdmall.com
Jul 17 '05 #2

P: n/a
><?
$a=1.5345493;
$b=round($a,2);
echo "b: ".$b;
?>

This code should return "b: 1.54",
Would you care to justify that statement? WHY should
it return 1.54?
but instead returns "b: 1.53". Can
Which I believe to be the correct answer.anyone else confirm this?

Also, does anyone have a way around this issue?

PHP 4.3.6
Apache 1.3.33
MySQL 3.23.49


Gordon L. Burditt
Jul 17 '05 #3

P: n/a
db_guy wrote:

<?
$a=1.5345493;

$b=round($a,2);

echo "b: ".$b;
?>

This code should return "b: 1.54", but instead returns "b: 1.53". Can
anyone else confirm this?

Also, does anyone have a way around this issue?


Since 1.534... is smaller than 1.535, round($a,2) will correctly round
it down to 1.53. I wouldn't know what should be wrong with that.

Check the rounding functions. There are also functions that always round
up or down, namely ceil() and floor(). Maybe you were looking for ceil()
instead of round()?
Jul 17 '05 #4

This discussion thread is closed

Replies have been disabled for this discussion.