A rational is a float/double, the problem with that is basically the base 2 ( used by computers ) vs base 10 ( used by humans in the classic math calculus ), in the end getting a good representation of a generic rational number is a good challenge, considering a value with a magnitude of 10^100 this becomes an extremely good challenge.
I think that you should pause for a minute and think about this because a float generated by 10^100/10^100 can be really gigantic and doing this with a computer is something for a really advanced lab in my opinion, you can't expect a library to solve this kind of problems with efficiency and most importantly with accuracy with a magnitude this big.
further reading