【问题标题】:How to represent rational numbers in memory?如何在内存中表示有理数?
【发布时间】: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

【问题讨论】:

    标签: binary numbers theory


    【解决方案1】:

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

    通常浮点数用于存储有理数,浮点数只有在显示时才转换为分数。

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

    【讨论】:

    • 我已经从问题中删除了sqrt(2),因为它显然不适合。
    • 已编辑删除显式 sqrt(2) 引用。
    猜你喜欢
    • 2013-12-17
    • 2011-12-12
    • 1970-01-01
    • 2015-07-19
    • 2013-10-21
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多