Fix Rational-Float Issue by typecasting float to str

Rational(0.2) ! = Rational('0.2')
This inconsistency is not required, and leads to unnecessary use of long numbers to store the Rational number.

For example,
Rational(0.2) = 3602879701896397/18014398509481984 which is not exactly correct.
Rational('0.2') = 1/5 as you expect. 

Both these results must be same and simple. 

I've ran all the tests. No problems with it. 
Only the test corresponding to Rational(0.2) fails, which is expected.