468,457 Members | 1,819 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 468,457 developers. It's quick & easy.

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 2915
<comp.lang.php>
<>
<Mon, 27 Aug 2007 14:36:14 -0700>
<11**********************@57g2000hsv.googlegroups. com>
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>
<11**********************@57g2000hsv.googlegroups. com>
>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>
<1188250574.997233.228...@57g2000hsv.googlegroups. com>
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
news:MP************************@news.newsreader.co m...
| <comp.lang.php>
| <>
| <Mon, 27 Aug 2007 14:36:14 -0700>
| <11**********************@57g2000hsv.googlegroups. com>
|
| 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>
<11**********************@o80g2000hse.googlegroups .com>
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
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
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 NPC403 | last post: by
1 post views Thread by subhajit12345 | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.