made toDouble for Integer and Rational lazy