To get something to fit right, you need to know your gauge and the finished measurement you need. It could be you knit the wrong size, a mistake many people make, thinking they're larger than they are, or you didn't have the right number of stitches per inch.
A pattern will give its gauge over 4" because that's more accurate, and it's a good idea to do a sample, using about 6-10 more stitches to see how your tension compares. If you're not using a pattern, or are using a different yarn or needle size, then you still need to do a sample to see what your gauge is and how many stitches will get you the finished measurement. You can rip out that old top if you still have it and reuse the yarn, but measure it first, both overall and the stitches per inch to see where you might have gone wrong in it.
sue- knitting heretic