In order to understand this bug, first, you must understand that Approval and Morale are two separate things.
Approval ≠ Morale
Approval is derived from Morale using the formula of:
Approval = Morale / Population * (n + 100%)
where,
- n is the total sum of all Approval modifiers in the game;
- Morale is the total sum of all constant morale modifiers times percent morale modifiers in the game;
The formula for Morale is then:
Morale = total constant morale modifiers * total percent morale modifiers
The source of all this confusion comes from the switch to Goods and Services system a few patches back. Instead of gutting the whole Approval system, the devs simply add the Morale formula above and convert all existing and future Approval modifiers in the game to be Morale modifiers. n is therefore meant to be permanently zero with the switch to Goods and Services system (n shall no longer exist). This is where the bug for the approval relic comes from. The approval relic bonus applies directly to n instead of to Morale. If n is not meant to be permanently zero, it means that we need to juggle two separate systems just to achieve one thing, namely "I want my planet to be happy".
______________________________________________________________
More Robust Approval System Required
As we can see, adding an additional formula does not provide a clean break from the previous Approval system. We are not meant to be able to directly modify Approval anymore, but the formula to modify Approval is still there. And given that there are still so many Approval carrying terms in the game, it is quite easy to make a mistake.
Imagine this conversation with a new player; "No, no, no. Approval building does not provide Approval. It provides Morale which will then be used to modify the Approval". "So, how much Morale do I need?"
And, to a modder, "You have to use Approval tag on the improvement type, Goods and Services tag on the planet trait, Approval tag on neighbour bonus, Goods and Services tag on UP resolution, and so on". Try searching for Approval and GoodsandServices in the xml files. It's quite messy. A wrong tag would have cause the same error as the title of this thread.
In summary, the current Approval and Morale system is quite convoluted. Perhaps the n has to be permanently removed from the formula to prevent direct modification of Approval in the future. I seriously don't want to juggle the question of "Shall I build Approval building or shall I build Morale building instead?".
Most importantly, please fix the bug in the title in the meantime. Thanks.
_______________________________________________________________
Adding a printscreen below to show the example calculations.

First, we calculate the Morale value:
(5 + 13 + 4 + 3 + 3) * (25% + 25% -20% -117%) = 3.64
It is the same as shown in the printscreen.
Then, we calculate the Approval value:
3.64 / 22.4 * 100% = 16.25%
The manually calculated figure is different with the shown figure, 52%. This is due to the bug of n. I have three Approval relic starbase that gives me a total of 220% (90% + 90% + 40%). Applying n in the calculation above:
3.64 / 22.4 * (220% + 100%) = 52%
n shall not exist.