On Jan 11, 2010, at 4:56 PM, tedd wrote:
At 2:55 PM -0500 1/11/10, Rick Dwyer wrote:
I have been asked to further modify the value to the nearest half
cent.
So if the 3rd decimal spot ends in 1 or 2, it gets rounded down to 0
If it ends in 3, 4, 5, 6 it gets rounded to 5. And if it 7, 8 or 9
it gets rounded up to full cents.
Can this be done fairly easily? Not knowing PHP well, I am not
aware of the logic to configure this accordingly.
Thanks,
--Rick
--Rick:
The above described rounding algorithm introduces more bias than
simply using PHP's round() function, which always rounds down. IMO,
modifying rounding is not worth the effort.
I understand what you are saying and I agree. But the decision to
round to half cents as outlined above is a client requirement, not
mine (I did try to talk them out of it but no luck).
I come from an LDML environment, not a PHP one so I don't know the
actual code to make this happen. But the logic would be something like:
If 3 decimal than look at decimal in position 3.
If value = 1 or 2 set it to 0
If value = 3,4,5,6 round it to 5
If value = 7,8,9 round it to a full cent
Anybody have specific code examples to make this happen?
Thanks,
--Rick
The "best" rounding algorithm is to look at the last digit and do
this:
0 -- no rounding needed.
1-4 round down.
6-9 round up.
In the case of 5, then look to the number that precedes it -- if it
is even, then round up and if it is odd, then round down -- or vise
versa, it doesn't make any difference as long as you are consistent.
Here are some examples:
122.4 <-- round down (122)
122.6 <-- round up (123)
122.5 <-- round up (123)
123.4 <-- round down (123)
123.6 <-- round up (124)
123.5 <-- round down (123)
There are people who claim that there's no difference, or are at
odds with this method, but they simply have not investigated the
problem sufficiently to see the bias that rounding up/down causes.
However, that difference is very insignificant and can only be seen
after tens of thousands iterations. PHP's rounding function is
quite sufficient.
Cheers,
tedd
--
-------
http://sperling.com http://ancientstones.com http://earthstones.com
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
--Rick
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php