【发布时间】:2017-03-22 17:51:20
【问题描述】:
我知道用二进制表示数字的三种方法:
- 整数
- 定点小数(基本上只是整数除以常数)
- 浮点小数(基本上只是整数除以/乘以 2 的可变幂)
但这些都不能以完全精度和无舍入误差表示 0.1 和 1/3 之类的数字。
我想在内存中表示 any 有理数 - 存在哪些不同的表示?他们的(缺点)优势是什么(与上述相比)?我如何用它们计算(+-*/)?它们的范围、分辨率是多少以及如何处理边缘情况(极小/大/精确的数字)?
一些例子:
- 1/3
- 0.1
- 0.000001234
- 10^100
- 10^100+0.1
- 2/4
【问题讨论】: