Fix Float#to_d behaviour

Currently

```ruby

9.05.to_d.to_s('F') => "9.050000000000001"

```
which adds the extra '1'
This patch tries to fix this behaviour and associated tests