Rounding
From Wikipedia, the free encyclopedia
Rounding is the process of reducing the number of significant digits in a number. The result of rounding is a "shorter" number having fewer non-zero digits yet similar in magnitude. The result is less precise but easier to use.
For example: 73 rounded to the nearest ten is 70, because 73 is closer to 70 than to 80.
Rounding can be analyzed as a form of quantization.
There are many different rules that can be followed when rounding. Some of the more popular are described below.
Contents |
This method is commonly used in mathematical applications, for example in accounting. It is the one generally taught in elementary mathematics classes. This method is also known as Symmetric Arithmetic Rounding or Round-Half-Up (Symmetric Implementation)
- Decide which is the last digit to keep.
- Increase it by 1 if the next digit is 5 or more (this is called rounding up)
- Leave it the same if the next digit is 4 or less (this is called rounding down)
Examples:
- 3.044 rounded to hundredths is 3.04 (because the next digit, 4, is less than 5).
- 3.045 rounded to hundredths is 3.05 (because the next digit, 5, is 5 or more).
- 3.0447 rounded to hundredths is 3.04 (because the next digit, 4, is less than 5).
For negative numbers the absolute value is rounded.
Examples:
- −2.1349 rounded to hundredths is −2.13
- −2.1350 rounded to hundredths is −2.14
This method is also known as unbiased rounding, convergent rounding, statistician's rounding or bankers' rounding. It is identical to the common method of rounding except when the digit(s) following the rounding digit start with a five and have no non-zero digits after it. The new algorithm is:
- Decide which is the last digit to keep.
- Increase it by 1 if the next digit is 6 or more, or a 5 followed by one or more non-zero digits.
- Leave it the same if the next digit is 4 or less
- Otherwise, all that follows the last digit is a 5 and possibly trailing zeroes; then change the last digit to the nearest even digit. That is, increase the rounded digit if it is currently odd; leave it if it is already even.
With all rounding schemes there are two possible outcomes: increasing the rounding digit by one or leaving it alone. With traditional rounding, if the number has a value less than the half-way mark between the possible outcomes, it is rounded down; if the number has a value exactly half-way or greater than half-way between the possible outcomes, it is rounded up. The round-to-even method is the same except that numbers exactly half-way between the possible outcomes are sometimes rounded up—sometimes down.
Although it is customary to round the number 4.5 up to 5, in fact 4.5 is no nearer to 5 than it is to 4 (it is 0.5 away from both). When dealing with large sets of scientific or statistical data, where trends are important, traditional rounding on average biases the data upwards slightly. Over a large set of data, or when many subsequent rounding operations are performed as in digital signal processing, the round-to-even rule tends to reduce the total rounding error, with (on average) an equal portion of numbers rounding up as rounding down. This generally reduces the upwards skewing of the result.
Round-to-even is used rather than round-to-odd as the latter rule would prevent rounding to a result of zero.
Examples:
- 3.016 rounded to hundredths is 3.02 (because the next digit (6) is 6 or more)
- 3.013 rounded to hundredths is 3.01 (because the next digit (3) is 4 or less)
- 3.015 rounded to hundredths is 3.02 (because the next digit is 5, and the hundredths digit (1) is odd)
- 3.045 rounded to hundredths is 3.04 (because the next digit is 5, and the hundredths digit (4) is even)
- 3.04501 rounded to hundredths is 3.05 (because the next digit is 5, but it is followed by non-zero digits)
The Round-to-even method has been the ASTM (E-29) standard since 1940. The origin of the terms unbiased rounding and statistician's rounding are fairly self-explanatory. In the 1906 4th edition of Probability and Theory of Errors [1] Robert Woodward called this "the computer's rule" indicating that it was then in common use by human computers who calculated mathematical tables. Churchill Eisenhart's 1947 paper "Effects of Rounding or Grouping Data" (in Selected Techniques of Statistical Analysis, McGrawHill, 1947, Eisenhart, Hastay, and Wallis, editors) indicated that the practice was already "well established" in data analysis.
The origin of the term bankers' rounding is more obscure. If this rounding method was ever a standard in banking, the evidence has proved extremely difficult to find. To the contrary, section 2 of the European Commission report The Introduction of the Euro and the Rounding of Currency Amounts [2] suggests that there had previously been no standard approach to rounding in banking.
Other methods of rounding exist, but use is mostly restricted to computers and calculators, statistics and science. In computers and calculators, these methods are used for one of two reasons: speed of computation or usefulness in certain computer algorithms. In statistics and science, the primary use of alternate rounding schemes is to reduce bias, rounding error and drift—these are similar to round-to-even rounding. They make a statistical or scientific calculation more accurate.
Other methods of rounding include "round towards zero" (also known as truncation) and "round away from zero". These introduce more round-off error and therefore are rarely used in statistics and science; they are still used in computer algorithms because they are slightly easier and faster to compute. Two specialized methods used in mathematics and computer science are the floor (always round down to the nearest integer) and ceiling (always round up to the nearest integer).
Stochastic rounding is a method that rounds to the nearest integer, but when the two integers are equidistant (e.g., 3.5), then it is rounded up with probability 0.5 and down with probability 0.5. This reduces any drift, but adds randomness to the process. Thus, if you perform a calculation with stochastic rounding twice, you may not end up with the same answer. The motivation is similar to statistician's rounding.
- C
- C99 specifies (in
<math.h>):round(): round to nearest integer, halfway away from zerorint(),nearbyint(): round according to current floating-point rounding directionceil(): smallest integral value not less than argumentfloor(): largest integral value not greater than argumenttrunc(): round towards zero
- The current floating-point rounding direction may, depending on implementation, be retrieved and set using the
fegetround()/fesetround()functions defined in<fenv.h>; the available directions are specified to be at least those in IEEE 854 (see IEEE 754#Rounding floating-point numbers) which include round-to-even, round-down, round-up, and round-to-zero.
- C99 specifies (in
- PHP:
- round(-3.5) gives -4.
- round(8.7352,3) gives 8.735.
- round(4278.5,-2) gives 4300.
- JavaScript:
- Uses Asymmetric Arithmetic Rounding
- Math.round (-3.5) gives -3.
- Visual Basic for Applications:
- Uses Round-Half-Even (Banker's Rounding)
- ? Round(2.5, 0) gives 2.
- http://support.microsoft.com/kb/194983
- Microsoft SQL Server:
- Uses either Symmetric Arithmetic Rounding or Symmetric Round Down (Fix) depending on arguments
- SELECT Round(2.5, 0) gives 3.
- Microsoft Excel:
- Uses Symmetric Arithmetic Rounding
- = ROUND(2.5, 0) gives 3.
- = ROUND(3.5, 0) gives 4.
- = ROUND(-3.5, 0) gives -4
- Microsoft .NET Framework
- The
Convert.ToInt32(Double)function and similar forms uses Banker's Rounding. - The
Math.Round(...)overloads use Banker's Rounding by default, but .NET 2.0 added an overload that allows the developer to specify the desired type of rounding.
- The
- C#
- The
(int)cast rounds toward zero. Note that this is different from using theConvertclass in the .NET Framework! - Framework 2.0 introduced an overload of the System.Math.Round() function that allows the rounding type to be specified. The definition is here: [3].
- The
The Round() function is not implemented in a consistent fashion among different Microsoft products for historical reasons.
How To Implement Custom Rounding Procedures
In meteorology, temperatures between 0.0 and −0.5 degrees (exclusive) may be rounded to −0 to indicate a temperature which is below zero, but not cold enough to be rounded to −1 or less. It is used especially in the Celsius scale, where below zero indicates freezing. It may be used, for example, to allow tallying of below-zero days.
- An introduction to different rounding algorithms that is accessible to a general audience but especially useful to those studying computer science and electronics.