Using very big numbers, long isn't enough

I am trying to do calculations with very big numbers. In my calculation, for instance, the faculty of 64 is to be included in a function, and that is a very big number: 1,2688693218588416410343338933516e+89.

My program doesn't seem to work properly after around the faculty of 30. I first used int in my functions but then I tried to replace them with long. This didn't help, so I'm suspecting that using long still isn't enough. Is there a way I can handle even bigger numbers? Is there an absolute limit to the size of numbers a program can handle?