I have this query my goal is to get percent

NVL(ROUND(100 * NVL(activeCount, 0) / NULLIF((NVL(activeCount, 0) + NVL(blockCount, 0) + NVL(closeCount, 0) + NVL(draftCount, 0)), 0), 0), 0) AS activePercent,
    NVL(ROUND(100 * NVL(blockCount, 0) / NULLIF((NVL(activeCount, 0) + NVL(blockCount, 0) + NVL(closeCount, 0) + NVL(draftCount, 0)), 0), 0), 0) AS blockPercent,
    NVL(ROUND(100 * NVL(closeCount, 0) / NULLIF((NVL(activeCount, 0) + NVL(blockCount, 0) + NVL(closeCount, 0) + NVL(draftCount, 0)), 0), 0), 0) AS closePercent,
    NVL(ROUND(100 * NVL(draftCount, 0) / NULLIF((NVL(activeCount, 0) + NVL(blockCount, 0) + NVL(closeCount, 0) + NVL(draftCount, 0)), 0), 0), 0) AS draftPercent

But some records when I add to get the total its 99 sometimes its 101

What is the best way to make sure I get 100 all the time?

Sample data:

Total is 99:

Total is 101: