Exact symbolic results are usually very desirable when they can be found. In many calculations, however, it is not possible to get symbolic results. In such cases, you must resort to numerical methods.
Functions such as
Integrate always try to get exact results for computations. When they cannot get exact results, they typically return unevaluated. You can then find numerical approximations by explicitly applying
N. Functions such as
NIntegrate do the calculations numerically from the start, without first trying to get an exact result.