470,871 Members | 2,184 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 3017 <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 discussion thread is closed

Replies have been disabled for this discussion.

### Similar topics

 4 posts views Thread by tertius | last post: by 6 posts views Thread by Penguin | last post: by 10 posts views Thread by tmeister | last post: by 9 posts views Thread by Ronald W. Roberts | last post: by 4 posts views Thread by Chris Davoli | last post: by reply views Thread by thaisummitneel | last post: by 4 posts views Thread by Jassim Rahma | last post: by 7 posts views Thread by Will Rocisky | last post: by reply views Thread by Edwin.Madari | last post: by reply views Thread by AlexandraMT | last post: by reply views Thread by prepawan | last post: by 1 post views Thread by DANILIN | last post: by reply views Thread by sjain6 | last post: by reply views Thread by shivajikobardan | last post: by reply views Thread by gglobus | last post: by reply views Thread by Ravipg | last post: by 1 post views Thread by DJRhino1175 | last post: by reply views Thread by zachatmarco | last post: by