|


Teaching Rounding RulesDate: 10/17/2002 at 03:20:01 From: Olof Subject: The convention of always rounding .5 up I've been teaching my son that when one rounds numbers like 3.5 or 4.5 to the nearest integer, one always rounds to the nearest even integer, so that 3.5 should be rounded up, and 4.5 should be rounded down. (Of course, 4.500001 gets rounded up to 5.) This is what I was taught in college (and still seems to be the IEEE standard). However, every grade school textbook I find (as well as the Dr. Math web page) says that one always rounds up. Is there any good reason why grade-schoolers are taught to always round up? Date: 10/17/2002 at 09:36:08 From: Doctor Peterson Subject: Re: The convention of always rounding .5 up Hi, Olof. Did you see this page in our archives? Rounding Decimals: Even/Odd Issues http://mathforum.org/library/drmath/view/58972.html The rule taught to children is used because it is very simple, requiring only looking at the next digit to see if it is 5 or more. It arises in a simple way: since any number whose next digit is 5, followed by something other than zero, definitely requires rounding up, it is convenient to treat 4.5 the same as 4.51, 4.501, and so on. Also, it is easy to implement this in programming: round(x) = int(x+0.5) so that round(4.5) = int(5.0) = 5. I had not been aware that IEEE had a convention for rounding, so I looked it up, and found that things are just a little more complicated. It turns out that there are several "IEEE rounding modes": http://www.cs.nyu.edu/courses/spring02/V22.0480-002/mips-fpt.pdf Rounding Modes Round to nearest even o This is the normal default mode Round/truncate towards zero Round down towards minus infinity Round up towards plus infinity o Last two can be used for interval arithmetic Unbiased Rounding Round to nearest exact number For 0.5 case, round so that result is even o Example for integers o 2.5 rounds to 2 o 3.5 rounds to 4 This avoids bias in rounding This article discusses rounding algorithms in detail: http://www.eng.tau.ac.il/~guy/Papers/dual_precision_FP_MUL.pdf The IEEE Standard defines four rounding modes: round toward 0, round toward [+infinity], round toward [-infinity], and round to nearest. We deal with numbers that are represented in a sign-magnitude representation. The rounding modes round toward [+infinity] and round toward [-infinity] can be reduced, based on the sign of the number, either to round toward zero (i.e. truncate) or round to infinity (i.e. round up) [7]. We assume henceforth that the number to be rounded is non-negative. We focus on three rounding modes: RZ - round toward zero, RI - round toward infinity, and RNE - round to nearest (even). Following Quach et al., we implement RNE by RNU (round to nearest up) followed by an adjustment of the LSB. RNU mode differs from RNE mode only when the exact result is in the midpoint between two successive representable values; in this case RNE rounds to the representable value with the zero LSB and RNU rounds to the larger representable value. A discrepancy between RNE and RNU can occur only if the LSB in RNU is 1, in which case pulling down the LSB to zero results with the RNE result. So RNE is the default mode; RNU would be what we teach children, and is not supported by IEEE. Of course, IEEE rounding applies to binary, not to decimal digits. I've learned something new! Here is an additional site I that shows how the Pentium implements the optional modes supported by the standard; search for "rounding" within the page: http://www.intel.com/design/intarch/techinfo/pentium/fpu.htm If you have any further questions, feel free to write back. - Doctor Peterson, The Math Forum http://mathforum.org/dr.math/ Date: 08/25/2003 at 20:33:28 From: Edward Subject: Rounding numbers, IEEE vs. standard accounting practice Many programming languages have incorporated the IEEE 754 standard for rounding. This standard causes the following: 2.5 is rounded to 2 instead of 3, and -123.9 is rounded to -123 instead of -124. Both of these do not conform to what I consider standard accounting practice. My question is: Where can I find a definition of how rounding should be performed in accounting? There is considerable documantation on the IEEE standard. However I cannot find any supporting documntation on what I have been programming for 42 years regarding rounding. I only discovered the IEEE standard a few weeks ago, and it has created a big dilemma for me. Please help. Date: 08/26/2003 at 09:51:35 From: Doctor Peterson Subject: Re: Rounding numbers, IEEE vs. standard accounting practice Hi, Edward. I'm not sure whether what you are saying is true. As I understand it, first, the IEEE standard for rounding is (normally, but not universally) to round to the nearest even number; but, second, that standard applies to internal rounding of floating point results to get the last bit in binary, not to rounding floating point to integer, which is language-dependent. Many languages do not even have a built-in rounding construct, but simply truncate when converting float to int (as in C). If you want to round, you would use a function dedicated to rounding by whatever definition you choose. It is popular to round by the "round up at 5" rule, because that is easy to program (by adding 0.5 and truncating); but for statistical purposes, one can write a function that rounds to the nearest even number, and I would expect statistical packages to do so. As you can see from my answer to Olof, I am not an expert in IEEE standards, so if you have details that would correct my understanding, please let me know. For accounting, you will want to look for accounting standards, not mathematical or computing standards. I could easily imagine practical rules such as always rounding down prices charged but rounding up taxes owed, or something like that; there are other considerations besides statistical errors in play where money in concerned. But I know nothing about that! I did find this discussion, which is apparently your own question: http://www.computing.net/programming/wwwboard/forum/7602.html I see you didn't come to a conclusion about accounting practice, and that there are no official rules on this matter. If you ever do find a clear definition of rounding from an accounting standards organization, please let me know! - Doctor Peterson, The Math Forum http://mathforum.org/dr.math/
Date: 08/26/2003 at 17:04:41
From: Doctor Peterson
Subject: Re: Rounding numbers, IEEE vs. standard accounting practice
I read your discussion on Computing.Net more carefully, and noticed
that your use of Basic may be influencing your perception of the
problem. I'd like to add a few comments.
First, as I said, the IEEE standard does not force languages to round-
to-nearest-even when they convert floating point to integer; that
policy is language-dependent. Looking first at the help for VB, I
find this:
Each function coerces an expression to a specific data type.
...
The required expression argument is any string expression or
numeric expression.
Function Return Type Range for expression argument
...
CInt Integer -32,768 to 32,767; fractions are rounded.
CLng Long -2,147,483,648 to 2,147,483,647; fractions
are rounded.
...
When the fractional part is exactly 0.5, CInt and CLng always
round it to the nearest even number. For example, 0.5 rounds to 0,
and 1.5 rounds to 2. CInt and CLng differ from the Fix and Int
functions, which truncate, rather than round, the fractional part
of a number. Also, Fix and Int always return a value of the same
type as is passed in.
So the issue here is not that IEEE requires this type of rounding (or
any rounding); it is simply that Microsoft chose to define the Int
function as truncating, the CInt function as rounding to nearest
even, and, as far as I can see, provide no function to round using
what you and I consider the "basic", normal method. The Round
function does exactly what CInt does (when rounding to an integer).
Now, in C, conversion always means truncation; here is VC's
explanation:
Floating to Integral
When an object of floating type is converted to an integral type,
the fractional part is truncated. No rounding takes place in the
conversion process. Truncation means that a number like 1.3 is
converted to 1, and –1.3 is converted to –1.
I tested Basic and found that although Int truncates, as C does, it
always truncates toward -infinity (that is, -1.3 is truncated to -2)
rather than toward zero as C does. So C allows you to round the way
you want to more easily than VB does. But the Basic function you gave
is just right; define that as a function in all your projects and you
have what you want. Why Microsoft doesn't provide it for you, I can't
guess.
This doesn't help at all with your real issue, of course. I suspect
that accounting organizations don't know about the statisticians'
preferred way to round, or about IEEE, and just assume that everyone
rounds the way they were taught in school (though we get questions
from people who say they learned round-to-nearest-even in school, and
are surprised at what their children are taught). But it's worth
knowing that the computing industry is not deliberately messing up
accountants' work. (Well, maybe Microsoft is ...)
- Doctor Peterson, The Math Forum
http://mathforum.org/dr.math/
Date: 08/27/2003 at 17:08:15 From: Doctor Peterson Subject: Re: Rounding numbers, IEEE vs. standard accounting practice Hi, Edward. I have continued to search for information, because I would expect the accounting or financial industry to pay careful attention to rules such as those for rounding. Also, the fact that some parents have thought that the round-up-on-5 rule that we teach is incorrect, having learned the round-to-nearest-even-on-5 method in school, makes it important to me to find out who actually uses each rule. We all seem to think that what we learned in school is normal, but both methods seem to be taught in different schools, and there really is no "normal". Here is the best I have found. First, there are clear rules for conversion of European currency: What are the Euro ROUNDING Rules? http://home.clara.net/odonoghue/qa2-3.htm ARTICLE 5 Monetary amounts to be paid or accounted for, when a rounding takes place after a conversion into the euro unit according to article 4, shall be rounded up or down to the nearest cent. Monetary amounts to be paid or accounted for which are converted into a national currency unit shall be rounded up or down to the nearest sub-unit, or in the absence of a sub-unit to the nearest unit or according to national law or practice to a multiple or fraction of the sub-unit or unit of the national currency unit. If the application of the conversion rates gives a result that is exactly halfway, the sum shall be rounded up. There will be a fixed conversion rate between the Euro and each participating currency and this will be expressed to six significant figures (note not decimal places). That shows that there is at least one financial area where round-up- on-5 is explicitly required. The next page shows a large number of possible rounding rules, and, along with many others I've found, refers to the "nearest-even" rule as Bankers' Rounding, which turns the issue on its head: Pascal/Delphi Rounding and Truncation. http://www.merlyn.demon.co.uk/pas-chop.htm Some of the pages I found while searching for this phrase explicitly claim that it is standard in accounting. As far as I can see, though, only programmers call it that, not bankers, so I have no absolute evidence that bankers actually round this way! Here is one of the more explicit statements (though still from programmers rather than from bankers) that it is indeed done: Rounding in Excel http://www.rmgsoftware.com/xl/xl063.htm This page explains how Excel handles rounding in certain instances. Assume that you want to round the value 7.5 to zero decimal places. The ROUND function would return the value 8. If you wanted to round the value 6.5 to zero decimal places, the ROUND function would return the value 7. In other words, when the value to be rounded is exactly midway between two values, Excel always rounds away from zero. You can demonstrate this by rounding the values -7.5 and -6.5 to zero decimal places. In this case, the ROUND function returns -8 and -7 respectively. This can cause problems if you use the ROUND function extensively on a worksheet, particularly in a statistical or analytical situation. A more common approach to this problem, particularly in the banking industry, is to round to the nearest even number. In the above examples, 7.5 would be rounded up to 8, while 6.5 would be rounded down to 6. This practice would at least ensure that rounding differences are minimised. (Note that that page faces the opposite of your problem: In Excel, only the rounding you prefer is supported, and they want to find a way to implement round-to-even!) The next, from IBM, makes a more specific claim: Decimal Arithmetic FAQ http://www2.hursley.ibm.com/decimal/decifaq1.html#rounding What rounding modes are needed for decimal arithmetic? The three most important are round-half-even, where a number is rounded to the nearest digit, and if it is half-way between two values then it is rounded to the nearest even digit. This method ensures that rounding errors cancel out (on average), and is sometimes called “Banker’s rounding”. For example, 12.345 rounded to four digits is 12.34 and 12.355 rounded to four digits is 12.36. round-half-up, where a number is rounded to the nearest digit, and if it is half-way between two values then it is rounded to the digit above. Here, 12.345 rounded to four digits is 12.35 and 12.355 rounded to four digits is 12.36. round-down, where a number is truncated (rounded towards zero). The first of these is commonly used for mathematical applications and for financial applications (other than tax calculations) in most states of the USA. The second is used for general arithmetic, for financial applications in the UK and Europe, and for tax applications in the USA. The third is used for both tax and other calculations, world-wide. This sounds like the most authoritative statement yet, and it tells us that the accounting industry is mixed up in its use of rounding, just like the rest of the world. I suspect this will not fully satisfy you, but it may be the best we'll get. - Doctor Peterson, The Math Forum http://mathforum.org/dr.math/ |
Search the Dr. Math Library: |
[Privacy Policy] [Terms of Use]


Ask Dr. MathTM
© 1994-2013 The Math Forum
http://mathforum.org/dr.math/