472,958 Members | 2,017 Online

# round number to the nearest...

I am looking for a way to round a number (which will be displayed as a
dollar amount) to the nearest nickel. Using the php round function
only allows you to control the number of decimal places in a number. I
need to round to the nearest .05. For example: 5.36 would be rounded
to 5.35, 10.49 would be rounded to 10.50, etc.. Any help would be
greatly appreciated.

Aug 27 '07 #1
6 3151
<comp.lang.php>
<>
<Mon, 27 Aug 2007 14:36:14 -0700>
I am looking for a way to round a number (which will be displayed as a
dollar amount) to the nearest nickel. Using the php round function
only allows you to control the number of decimal places in a number. I
need to round to the nearest .05. For example: 5.36 would be rounded
to 5.35, 10.49 would be rounded to 10.50, etc.. Any help would be
greatly appreciated.
Here goes the worst ever php code posted to this newsgroup .

But hang loose as somebody will be along shortly with a one line
solution :-)
<?php

\$demo=12.34;

print "demo = \$demo <br><br>";

\$daffyduck=strlen(\$demo);
print "daffyduck = \$daffyduck <br><br>";

\$mickymouse=substr(\$demo,\$daffyduck-3,1);
print "mickymouse = \$mickymouse <br><br>";

if (\$mickymouse==".")
{

\$snowwhite=substr(\$demo,0,\$daffyduck-1);
print "snowwhite = \$snowwhite <br><br>";

\$dwarfs=substr(\$demo,\$daffyduck-1,1);
print "dwarfs = \$dwarfs <br><br>";

if (\$dwarfs==0) {\$poop=0;}
if (\$dwarfs==1) {\$poop=0;}
if (\$dwarfs==2) {\$poop=0;}
if (\$dwarfs==3) {\$poop=5;}
if (\$dwarfs==4) {\$poop=5;}
if (\$dwarfs==5) {\$poop=5;}
if (\$dwarfs==6) {\$poop=5;}
if (\$dwarfs==7) {\$poop=0;}
if (\$dwarfs==8) {\$poop=0;}
if (\$dwarfs==9) {\$poop=0;}

\$albundy=\$snowwhite . \$poop;
print "albundy = \$albundy <br><br>";

}

?>
--
(c) The Amazing Krustov
Aug 27 '07 #2
dk*******@yahoo.com wrote:
I am looking for a way to round a number (which will be displayed as a
dollar amount) to the nearest nickel. Using the php round function
only allows you to control the number of decimal places in a number. I
need to round to the nearest .05. For example: 5.36 would be rounded
to 5.35, 10.49 would be rounded to 10.50, etc.. Any help would be
greatly appreciated.
Multiply by 20, then round, then divide by 20. That should do it.

function round_to_nickel(\$number)
{
return ( round( \$number*20 ) /20);
}

--
----------------------------------
Iván Sánchez Ortega -ivansanchez-algarroba-escomposlinux-punto-org-

http://acm.asoc.fi.upm.es/~mr/ ; http://acm.asoc.fi.upm.es/~ivan/
MSN:i_*************************@hotmail.com
Jabber:iv*********@jabber.org ; iv*********@kdetalk.net
Aug 27 '07 #3
Krustov wrote:
<comp.lang.php>
<>
<Mon, 27 Aug 2007 14:36:14 -0700>
>I am looking for a way to round a number (which will be displayed as a
dollar amount) to the nearest nickel. Using the php round function
only allows you to control the number of decimal places in a number. I
need to round to the nearest .05. For example: 5.36 would be rounded
to 5.35, 10.49 would be rounded to 10.50, etc.. Any help would be
greatly appreciated.

Here goes the worst ever php code posted to this newsgroup .

But hang loose as somebody will be along shortly with a one line
solution :-)
<?php

\$demo=12.34;

print "demo = \$demo <br><br>";

\$daffyduck=strlen(\$demo);
print "daffyduck = \$daffyduck <br><br>";

\$mickymouse=substr(\$demo,\$daffyduck-3,1);
print "mickymouse = \$mickymouse <br><br>";

if (\$mickymouse==".")
{

\$snowwhite=substr(\$demo,0,\$daffyduck-1);
print "snowwhite = \$snowwhite <br><br>";

\$dwarfs=substr(\$demo,\$daffyduck-1,1);
print "dwarfs = \$dwarfs <br><br>";

if (\$dwarfs==0) {\$poop=0;}
if (\$dwarfs==1) {\$poop=0;}
if (\$dwarfs==2) {\$poop=0;}
if (\$dwarfs==3) {\$poop=5;}
if (\$dwarfs==4) {\$poop=5;}
if (\$dwarfs==5) {\$poop=5;}
if (\$dwarfs==6) {\$poop=5;}
if (\$dwarfs==7) {\$poop=0;}
if (\$dwarfs==8) {\$poop=0;}
if (\$dwarfs==9) {\$poop=0;}

\$albundy=\$snowwhite . \$poop;
print "albundy = \$albundy <br><br>";

}

?>

I do admit - your solution is "ducky"! - and it "dwarfs" the ideas I
came up with.

Of course, this is a pure snow white PHP solution!

--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
js*******@attglobal.net
==================
Aug 28 '07 #4
On Aug 27, 5:59 pm, Krustov <m...@privacy.netwrote:
<comp.lang.php>
<>
<Mon, 27 Aug 2007 14:36:14 -0700>
I am looking for a way to round a number (which will be displayed as a
dollar amount) to the nearest nickel. Using the php round function
only allows you to control the number of decimal places in a number. I
need to round to the nearest .05. For example: 5.36 would be rounded
to 5.35, 10.49 would be rounded to 10.50, etc.. Any help would be
greatly appreciated.

Here goes the worst ever php code posted to this newsgroup .

But hang loose as somebody will be along shortly with a one line
solution :-)

<?php

\$demo=12.34;

print "demo = \$demo <br><br>";

\$daffyduck=strlen(\$demo);
print "daffyduck = \$daffyduck <br><br>";

\$mickymouse=substr(\$demo,\$daffyduck-3,1);
print "mickymouse = \$mickymouse <br><br>";

if (\$mickymouse==".")
{

\$snowwhite=substr(\$demo,0,\$daffyduck-1);
print "snowwhite = \$snowwhite <br><br>";

\$dwarfs=substr(\$demo,\$daffyduck-1,1);
print "dwarfs = \$dwarfs <br><br>";

if (\$dwarfs==0) {\$poop=0;}
if (\$dwarfs==1) {\$poop=0;}
if (\$dwarfs==2) {\$poop=0;}
if (\$dwarfs==3) {\$poop=5;}
if (\$dwarfs==4) {\$poop=5;}
if (\$dwarfs==5) {\$poop=5;}
if (\$dwarfs==6) {\$poop=5;}
if (\$dwarfs==7) {\$poop=0;}
if (\$dwarfs==8) {\$poop=0;}
if (\$dwarfs==9) {\$poop=0;}

\$albundy=\$snowwhite . \$poop;
print "albundy = \$albundy <br><br>";

}

?>

--
(c) The Amazing Krustov
Krustov,

I am loving the script but I think I will have to work on the \$poop a
bit. lol, When I get to a situation where the 1st digit after the
decimal needs to be rounded up, it still rounds down. This adds even
more diffuculty to it when I have a number like 5.98 as the entire
number will round to 6.00. Thanks for the help!

dkirk....

Aug 28 '07 #5

"Krustov" <me@privacy.netwrote in message
| <comp.lang.php>
| <>
| <Mon, 27 Aug 2007 14:36:14 -0700>
|
| I am looking for a way to round a number (which will be displayed as a
| dollar amount) to the nearest nickel. Using the php round function
| only allows you to control the number of decimal places in a number. I
| need to round to the nearest .05. For example: 5.36 would be rounded
| to 5.35, 10.49 would be rounded to 10.50, etc.. Any help would be
| greatly appreciated.
| >
|
| Here goes the worst ever php code posted to this newsgroup .
|
| But hang loose as somebody will be along shortly with a one line
| solution :-)
|
|
| <?php
|
| \$demo=12.34;
|
| print "demo = \$demo <br><br>";
|
| \$daffyduck=strlen(\$demo);
| print "daffyduck = \$daffyduck <br><br>";
|
| \$mickymouse=substr(\$demo,\$daffyduck-3,1);
| print "mickymouse = \$mickymouse <br><br>";
|
| if (\$mickymouse==".")
| {

which assumes that a dot will always denote cents, which doesn't make sense.
;^)
Aug 28 '07 #6
<comp.lang.php>
<>
<Mon, 27 Aug 2007 18:57:37 -0700>
if (\$dwarfs==0) {\$poop=0;}
if (\$dwarfs==1) {\$poop=0;}
if (\$dwarfs==2) {\$poop=0;}
if (\$dwarfs==3) {\$poop=5;}
if (\$dwarfs==4) {\$poop=5;}
if (\$dwarfs==5) {\$poop=5;}
if (\$dwarfs==6) {\$poop=5;}
if (\$dwarfs==7) {\$poop=0;}
if (\$dwarfs==8) {\$poop=0;}
if (\$dwarfs==9) {\$poop=0;}

\$albundy=\$snowwhite . \$poop;
print "albundy = \$albundy <br><br>";

}

?>

--
(c) The Amazing Krustov

Krustov,

I am loving the script but I think I will have to work on the \$poop a
bit. lol, When I get to a situation where the 1st digit after the
decimal needs to be rounded up, it still rounds down. This adds even
more diffuculty to it when I have a number like 5.98 as the entire
number will round to 6.00. Thanks for the help!
Dont you mean it will round down to 5.90 ? .
if (\$dwarfs==7) {\$poop="plop";}
if (\$dwarfs==8) {\$poop="plop";}
if (\$dwarfs==9) {\$poop="plop";}

if (\$poop=="0")
{
\$albundy=\$snowwhite . \$poop;
print "albundy = \$albundy <br><br>";
}

if (\$poop=="5")
{
\$albundy=\$snowwhite . \$poop;
print "albundy = \$albundy <br><br>";
}

if (\$poop=="plop")
{
\$albundy=\$snowwhite . "0";
\$albundy=\$albundy+0.10;
print "albundy = \$albundy <br><br>";
}

Havent tested the +0.10 and it probably wont work .
--
(c) The Amazing Krustov
Aug 28 '07 #7

This thread has been closed and replies have been disabled. Please start a new discussion.