Long double usually has about 2 more digits than double. If an integer type is appropriate, type longlong should give about 18 and a bit digits.
Beyond that, a separate bignumber library will be needed.
Edit: It may depend upon the compiler. I've found different precision for longdouble, depending upon the compiler and options selected.