Your pokemon's level and IV's don't change upon evolution, same as in the main games, so usually (in this game) it is recommended that you evolve first as the moves are randomized upon evolution, and could be good or bad. Magikarp is of course useless in this game, but Gyarados could have relatively good or relatively bad moves, though one does not simply evolve a Magikarp in Pokemon Go as it is so expensive.
That said, there's a curve in a pokemon's stat numbers, such that "97% of perfection" is an unlikely term unless you know your pokemon's IV's exactly (which could be the case). If you're simply going off of your pokemon's percentage of max CP minus min CP, well, that's not necessarily accurate.