SPUG:strange rounding problems
Adrian Hands
AEH at akc.org
Thu Jan 30 16:24:01 CST 2003
Odd rounds up, even rounds down.
e.g.:
11.5 -> 12
12.5 -> 12
13.5 -> 14
14.5 -> 14
15.5 -> 15
This prevents skewing in favor of up.
do not use int( $Value+.5) unless you know that $Value >= 0 !
>>> "Peter Darley" <pdarley at kinesis-cem.com> 01/30/03 05:09PM >>>
Folks,
I've had problems with this as well, and eventually abandoned
sprintf all
together. It's always kind of bugged me tho. The best solution for
rounding I came up with is int($Value+.5).
Thanks,
Peter Darley
-----Original Message-----
From: spug-list-admin at mail.pm.org
[mailto:spug-list-admin at mail.pm.org]On
Behalf Of Alan
Sent: Thursday, January 30, 2003 1:55 PM
To: spug-list at pm.org
Subject: SPUG:strange rounding problems
This may be a very silly question, but I figured I'd ask the local
monks...
The perl cookbook recommends using sprintf to do rounding, or write
your
own. The rounding that I need is pretty simple, so I figured that
just
rounding off via sprintf would not require me to write my own routine.
First I have to clarify. When I learnt about rounding, it was you
round
down if it is < 5, and round up if it is >= 5. IE: rounding (to whole
numbers) 12.4 gives you 12, and 12.7 gives you 13.
Using the code from the cookbook I found with the following program
$a = 12.30;
$b = sprintf("%.0f", $a);
print "Unrounded: $a\nRounded: $b\n";
I got the following results:
Unrounded: 12.3
Rounded: 12
Fine so far. Changing $a to 12.7 gives:
Unrounded: 12.7
Rounded: 13
Ok so far. But how about 12.5:
Unrounded: 12.5
Rounded: 12
Not quite right. But 12.5000000001:
Unrounded: 12.5000000001
Rounded: 13
Is this a bug or is this me now knowing how to round properly? I've
got
my own routine that rounds "properly", but I'm interested in knowing
why
there is this strange rounding behaviour.
TIA
alan
--
Alan <alan at ufies.org> - http://arcterex.net
---------------------------------------------------------------------
"The only thing that experience teaches us is that experience teaches
us nothing. -- Andre Maurois (Emile Herzog)
_____________________________________________________________
Seattle Perl Users Group Mailing List
POST TO: spug-list at mail.pm.org
ACCOUNT CONFIG: http://mail.pm.org/mailman/listinfo/spug-list
MEETINGS: 3rd Tuesdays, U-District, Seattle WA
WEB PAGE: www.seattleperl.org
_____________________________________________________________
Seattle Perl Users Group Mailing List
POST TO: spug-list at mail.pm.org
ACCOUNT CONFIG: http://mail.pm.org/mailman/listinfo/spug-list
MEETINGS: 3rd Tuesdays, U-District, Seattle WA
WEB PAGE: www.seattleperl.org
More information about the spug-list
mailing list