如何在内存中表示有理数



我知道有三种方法可以用二进制表示数字:

  • 整数
  • 固定点小数(基本上只是整数除以常量(
  • 浮点小数(基本上只是整数除以/乘以 2 的可变幂(

但是这些都不能完全精确地表示像 0.1 和 1/3 这样的数字,并且没有舍入误差。

我想表示内存中的任何有理数 - 存在哪些不同的表示形式?它们(缺点(是什么(与上述相比(?我如何使用它们进行计算(+-*/(?它们的范围、分辨率以及如何处理边缘情况(极小/大/精确数字(?

一些例子:

  • 1/3
  • 0,1
  • 0.000001234
  • 10^100
  • 10^100+0.1
  • 2/4

有理数 定义为可以表示为两个整数之比的数字。因此,必须存储两个足够长度的整数,以保证任何有理数的完美精度。

通常,浮点数

用于存储有理数,浮点数仅在显示时转换为分数。

无理数的存储,例如素数的精确根(而不是近似浮点数(,涉及解释字符串或计算机代数系统。

最新更新