四舍五入是转换为十进制时的副作用,因为双精度字面值`1.6`在二进制中代表一个有限小数,但在十进制中~~无限大~~(抱歉,不可能;正在调查中)。因此,`rationalize`会找到一个分数,该分数在四舍五入到双精度后与相同的数字匹配,这在某些情况下可能很有用,但它并不明显,我只希望它作为精确转换的补充实现,而不是替代。与其他语言进行比较
Python
```
from fractions import Fraction
print(Fraction(1.6))
```
`3602879701896397/2251799813685248`
Ruby
`puts 1.6.to_r`
`3602879701896397/2251799813685248`
Racket
```
#lang racket
(println (inexact->exact 1.6))
```
`3602879701896397/2251799813685248`