I haven't done a comparison of how fast BigRat works compared to BigFloat, so it may not be worth the effort after all.
If speed is ever an issue, then the gmp library provides "bigrat" (as well as both "bigfloat" and "bigint") types. The "bigrat" arithmetic is accessible from perl via Math::GMPq