You should also understand the distinction between implicit and explicit casting. With explicit casting, it means that the programmer wants the data type casted, and will take responsibility for any lost of precision.
So... why cast? Because the program needs the data in that type, and the programmer took care of possible lost of precision.
Henry