舍入是转换成十进制时产生的副作用。因为在二进制表示中`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`