In this paper we give an algorithm to round the floating point output of a semidefinite programming solver to a solution over the rationals or a quadratic extension of the rationals. We apply this to get sharp bounds for packing problems, and we use these sharp bounds to prove that certain optimal packing configurations are unique up to rotations. In particular, we show that the configuration coming from the $E_8$ root lattice is the unique optimal code with minimal angular distance $\pi/3$ on the hemisphere in $\R^8$, and we prove that the three-point bound for the $(3, 8, \vartheta)$-spherical code, where $\vartheta$ is such that $\cos \vartheta = (\sqrt{8}-1)/7$, is sharp by rounding to $Q[\sqrt{8}]$. We also use our machinery to compute sharp upper bounds on the number of spheres that can be packed into a larger sphere.