【问题标题】:Implementing negative exponents with arbitrary-precision integers?用任意精度整数实现负指数?
【发布时间】:2016-03-25 20:02:03
【问题描述】:

我正在尝试使用任意精度数学来制作计算器,但我不知道如何处理负指数。 执行涉及 n**-x 的操作的最有效方法是什么? 到目前为止,我已经尝试过 1/n**x,问题是我无法知道小数点后面会有多少个数字,例如使用整数会破坏使用任意精度制作计算器的目的限制允许输入数字的大小。我想知道是否有其他方法可以做到这一点。

我正在用 C 语言编程,但任何负指数方法都可以正常工作。

【问题讨论】:

  • 这和链表有什么关系?
  • 您能否详细说明您的计算器如何使用链表?这是存储任意精度整数吗?
  • 列表的每个节点都包含一个正在操作的数字,是的,我忘了说它是任意精度的,但是如果我要从二进制转换为十进制,我确实需要确切的结果所以我可以稍后将它添加到 2**-x 的另一个幂

标签: math data-structures exponential decimal-point


【解决方案1】:

如果您需要支持具有负指数的任意精度算术,听起来您可能需要考虑以最简单的形式将数字存储为分数,其中分子和分母分别存储任意精度整数。要实现 x-n 之类的东西,其中 x = a / b,你最终会得到数字 bn / an。这样,您根本不需要担心十进制数字,这是一件好事,因为大多数实数都没有有限的十进制表示。

【讨论】:

  • 听起来我可以用这个,但是我有点困惑 b 是什么,你能用实际数字举个例子吗?
  • 当然!假设您要存储数字 5。相反,存储 5 / 1。然后,要计算 5^-3,您可以存储 1 / 5^3 = 1 / 125。
  • 这绝对让我走上正轨,谢谢
猜你喜欢
  • 1970-01-01
  • 2014-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多