preserve significands in float-string conversion

#### before
```
mirb - Embeddable Interactive Ruby Shell

> 10.0 ** -8
 => 0.00000001
> 10.0 ** -8.5
 => 0.00000000316227    # lose significant digits
```

#### after
```
mirb - Embeddable Interactive Ruby Shell

> 10.0 ** -8
 => 0.00000001
> 10.0 ** -8.5
 => 3.16227766016837e-09
```