四舍五入是转换为十进制的副作用,因为在双精度格式中,字面量 `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`