Theres not really percentage, A good way to work is to monitor the rate of bug insertion - All else being equal, when it starts to fall, the product is becoming stable. If you say something like "Ship it when x% are fixed", you will probably ship unstable code
Therefore the answer is not as easy as "At percent x we call it a release". It's better to say "Once the insertaion rate is y% of the (maximum/typical/average) insertion rate, the software becomes a release candidate" Release candiates are tested for acceptance, and released or not after anaylisis of known and unknown bugs. You may decide to fix more severe bugs in release candidates, but you must not add features or make improvements.
Using statistical methods it is possible to "determine" unknown bugs. By that I mean get a statistical value of how many and how severe the ones you have not found are. Most of us have a gut instinct for this number, but few (including me) can do the maths.
Of couse, it you are not counting and like me, no good at math, you can go on gut instinct, and just ship it when its ready.......