PrecisionCalc
xl
Precision
Get Your Numbers Right
xlpROUND
Rounds a number to the specified number of digits, with up to 32,767 significant digits of precision. Same as Excel's built-in ROUND function, but with high precision.
Syntax
xlpROUND(num,num_digit,format_negative,format_thousands,format_currency,exponential_notation)
num | Required. The number to be rounded. |
num_digit | Required. The number of digits to which to round num. |
format_negative | Optional. Determines whether
negatives are formatted with a leading hyphen ("-"), or parentheses ("()").
Set to 1 to format negatives with a leading hyphen. Set to 2 for
parentheses. 1 by default.
You can also format negatives with a red font. |
format_thousands | Optional. Determines whether thousands separators are included. Set to TRUE to include thousands separators. FALSE by default. |
format_currency | Optional. Determines whether currency symbol is included. Set to TRUE to include currency symbol. The currency symbol will be added either to the beginning or to the end of the result, whichever is appropriate for the locale. FALSE by default. |
exponential_notation | Optional. Determines whether result is formatted in exponential notation. Set to TRUE to format in exponential notation. FALSE by default. |
Remarks
If num_digits is greater than 0 (zero), then num is rounded to the specified number of decimal places.
If num_digits is 0, then num is rounded to the nearest integer.
If num_digits is less than 0, then num is rounded to the left of the decimal point.
if num_digits is not an integer, it will be truncated to an integer. This is the same thing Microsoft Excel does.
xlPrecision results are returned as text that look like numbers, not as values that Excel recognizes as numbers. This is because Excel would truncate the results to 15 significant digits if it recognized them as numbers.
format_negative, format_thousands, format_currency, and exponential_notation are all ignored by the 25 SD edition of xlPrecision.
format_thousands and exponential_notation are ignored by the 35 SD edition of xlPrecision.
num and num_digits can accept both numbers and text.
num and num_digits can accept text formatted with the local currency symbol and thousands separators, and negatives can be formatted with either a leading hyphen or parentheses.
num can accept text up to 32,767 characters long.
Since xlPrecision cannot return a number with more than 32,767 characters, the effectiveness of num_digits is limited to -32,767 to 32,767.
You can use the results of xlPrecision functions as the operands in other xlPrecision formulas without losing any precision, but using them as operands in Excel's arithmetic functions will truncate them to 15 significant digits.
If the return value is so large that it has more than 32,767 characters to the left of the decimal, then xlPrecision is of course unable to return a correct value and instead returns "#VALUE!". Note, that's a vastly larger number than Excel can return without xlPrecision. Excel itself can only return or recognize a number with no more than 308 digits to the left of the decimal.
Decimal symbols, thousands separators, and currency symbols are all localized. This means that an xlPrecision formula that returns "$1,234,567.89" in the USA will return "1.234.567,89 €" in Germany, "1 234 567,89 €" in France, "1 234 567.89 kr" in Estonia, and "1.234.567,89Lek" in Albania.
The 32,767 SD edition can only provide a maximum of 32,767 total characters, including all formatting characters such as decimal, leading hyphen or parentheses for negatives, and thousands separators. As a result, it can only return the maximum 32,767 significant digits when the result is an unformatted positive integer. This is due to Excel's limitation of 32,767 characters in a cell. In all cases, the 32,767 SD edition will give you as many significant digits as possible with the formatting you have chosen.
Depending on how many significant digits the edition of xlPrecision provides, the result may be too long to conveniently view. You can view the full result by right-clicking the cell and choosing Format Cells | Alignment | Wrap Text, and widening the column to the width of the screen. An easy way to view the full result without changing column widths or wrapping text is to right-click the cell, choose Copy, and then paste into Notepad or a word processor.
Examples
Formula | Description | Result |
=xlpROUND(345.678,3) | 345.678 rounded to three decimal places. | 345.678 |
=xlpROUND(345.678,2) | 345.678 rounded to two decimal places. | 345.68 |
=xlpROUND(345.678,1) | 345.678 rounded to one decimal place. | 345.7 |
=xlpROUND(345.678,0) | 345.678 rounded to an integer (rounded to last digit to the left of the decimal). | 346 |
=xlpROUND(345.678,-1) | 345.678 rounded to one place to the left of the last digit to the left of the decimal. | 350 |
=xlpROUND(345.678,-2) | 345.678 rounded to two places to the left of the last digit to the left of the decimal. | 300 |
=xlpROUND(345.678,-3) | 345.678 rounded to three places to the left of the last digit to the left of the decimal. | 0 |
=xlpROUND(-345.678,2) | -345.678 rounded to two decimal places. | -345.68 |
=xlpROUND(-345.678,0) | -345.678 rounded to an integer (rounded to last digit to the left of the decimal). | -346 |
=xlpROUND(-345.678,-2) | -345.678 rounded to two places to the left of the last digit to the left of the decimal. | -300 |
=xlpROUND(345.678,2.999) | 345.678 rounded to two decimal places (num_digits is truncated to 2, not rounded to 3). | 345.68 |
=xlpROUND(345.678,2,,,,TRUE) | 345.678 rounded to two decimal places and formatted in exponential notation. | 3.4568E+2 |
=xlpROUND(A1,A2,2,TRUE,TRUE) | A1 rounded to A2 digits, formatted with parentheses (if negative), thousands separators, and currency symbol. |
See Also
xlpEVEN
xlpINT
xlpODD
xlpROUNDUP
xlpROUNDDOWN
xlpTRUNC