The default behavior now is the C-Round function. Essbase had two earlier implementations of Round function. The first implementation was supported until v22.214.171.124, the second from v126.96.36.199 and v188.8.131.52. Later releases switched to basic C-Round implementation.
There are provisions to support both the earlier implementations for those customers who may be using these implementations.
On Essbase 184.108.40.206, the @ROUND function now has a compatibility setting:
Possible compatibility keyword values:
- COMPATPREV11121—Original rounding algorithm, in use up until Release 220.127.116.11. The integer part of the number is used to generate the rounding margin of error. Limitation: aggregate values are only accurate up to the 15th decimal place. Only some decimal numbers can be represented perfectly in binary. For example, if the value 1234.725 is loaded, it may be represented in binary as 1234.72499999999991. Using the COMPATPREV11121 algorithm to round this number to two decimal places returns 1234.72, though you may prefer 1234.73.
- COMPATPREV11123—Alternate rounding algorithm, in use between Release 18.104.22.168 and 22.214.171.124, to negate the representational error discussed above. The rounding margin of error was changed for better precision, which in some cases returned different results than the original algorithm.
This has also been documented in the Essbase v126.96.36.199 Readme:
14191566 — Calculation. Data values may be different than expected because of rounding differences between older versions of Essbase and release 11.x. See the help topic for the @ROUND function in the Oracle Essbase Technical Reference, to optionally select a compatibility setting.