The default behavior now is the C-Round function. Essbase had two earlier implementations of Round function. The first implementation was supported until v220.127.116.11, the second from v18.104.22.168 and v22.214.171.124. 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 126.96.36.199, the @ROUND function now has a compatibility setting:
Possible compatibility keyword values:
- COMPATPREV11121—Original rounding algorithm, in use up until Release 188.8.131.52. 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 184.108.40.206 and 220.127.116.11, 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 v18.104.22.168 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.