Still ROUND issues with EXACT?
Hi,
I was under the assumption that the EXACT rounding method had fixed the issues with floating decimals?
My use case requires several rounded export modules out of one calculation module and thought it's good practise to use ROUND() only once in the calculation module and not in every export module.
Yet, I just discovered that it's still causing issues when the rounded result is used in further (even very simple) calculations. Please see below a replication of it.
First screenshot shows the round formula, second a basic calculation after round.
I will send this for investigation to Anaplan Support, but wondered if there's any additional recommendations on how to use ROUND() with EXACT?
Anapedia doesn't state any limitations.
Best Answer
-
@Misbah I finally received feedback from Level 3 support. They gave me the following explanation:
Ultimately, as the calculation is 2.2 * 2.2, this will produce 4.840000000000001 as the resulting line item value.
The recommendation is to apply the ROUND function with EXACT parameter on the resulting line item value (on the output module and not the system or calculation modules). In the example provided in your screenshots, the ROUND function with EXACT parameter should be applied on the “Use of rounded number” line item as its the resulting line item.
The floating decimal precision value is not an Anaplan issue but the way a computer (international IEEE 754 standard) handles calculation. The ROUND function with EXACT parameter was created to address this issue.This means ROUND can never be used in a central calc model. Instead you will always need to add it to the output module.
I asked them if there is any significant impact on performance doing so. In my case it would be > 200 line items using ROUND instead of 1, but total cell count is similar.
1
Answers
-
Shouldn't be the case. Please share your findings here once Support gets back to you.
1 -
Anaplan Support confirmed that it's a bug, but they are still looking into it.
Only workaround suggested so far is the old TEXT workaround used with ROUND before EXACT was available. My alternative would be to use a second ROUND() in the export module.
Both is not really "best practise" -> EXACT should just work.
0 -
1