1. Umm, maybe this is a bit unconventional, but as this is just for this one function, you could go through a reasonable degree of pain and create your own set of functions to do it. Seeing your a newbie programmer (like myself), I think you'd like it better if you did it yourself. And I guess you basically want to do it (it doesn't have to be a rational thing to do, but you'll still learn a lot from it). This is what I'm thinking:
Let the number be a linked list. That way, you can extend the number upto wherever you'd like it to go to. Then define addition. I guess by adding another property to your linked list (from here on ll) called length, and previous (instead of next, as your gonna go backwards) you could proceed. For addition, you get the last digit of the shorter ll, and add it to the position of the other ll. You can easily add a carry on function. You could do a similar process with multiplication. All of the numbers of the shorter ll multiply into each element of the longer ll. Carry ons of course apply. As you'll be dealing with decimals, you'll have to make a separation between the two also. I guess, could also separate the ll at creation, by making two sub lls, integral part and fractional part. You also have to make a good function for input and output(this is easy). I guess you could do all the other operations but that would require a bit more thought (especially for division)

I know this seems like a lot of work, but I don't really see another way around it with the little I know.

2. I know this seems like a lot of work
It is. That's why some smart people have done it already. swox.com/gmp Mostly anything you come up with is a tincan compared to it.

By the way, 15 digits of pi (what you can fit into a double) is enough to calculate the diameter of the Earth correct to the nanometer. What else would you want pi for...

3. As I said before, I don't think this is very rational, but I'm just suggesting that if you really want to do it, you could try this. It's just an idea. And I happen to be a newbie programmer with very little c++ experience, so if nobody could have figured a better more efficient way already, I'd be surprised.