SPARC has support for a
quadruple precision floating-point format (though, actually not implemented in hardware but emulated by software) that can be used from perl enabling the long-double flag at compilation time.
Though, as it is described in the documented linked by the AnonMonk above, rounding errors will still happen because the sets of numbers that can be represented in base 2 floats and in base 10 floats are different.
Also, it should be possible to develop a C/XS math library for fixed-length float-point with base 10 exponent representation of numbers that would be faster than Math::BigFloat that uses a variable length representation. For your particular case, a fixed-point representation may also work.