【问题标题】:Is this a case that I should use the decimal library?这是我应该使用十进制库的情况吗?
【发布时间】:2018-08-20 02:20:46
【问题描述】:
a = 1.5
i = 0
k = 0.2
results = []

while True:

    i += 1
    results.append(k)

    if k < a**i:
        continue

    elif k > a**i and k < 2 * a**1:
        k = k - a**i

    elif k > 2 * a**i:
        k = k - 2 * a**i

    else:
        break


print(results)

这是一个解决现实生活中数学问题的 Python 代码。当我运行它时,终端给出了这样的回溯:

Traceback (most recent call last):
  File "fusing.py", line 11, in <module>
    if k < a**i:
OverflowError: (34, 'Result too large')

我在堆栈溢出时发现了another question 关于该错误的信息。接受的答案说OP可以使用十进制库来修复它。我不确定我是否应该使用它或者还有其他一些解决方案。如果有人能告诉我该怎么做,我将不胜感激。

【问题讨论】:

  • 你试过了吗?没用吗?
  • 好的,但是当您修复错误时,运行仍然需要很长时间
  • 好吧,我会试试的。只是想知道这是否是最好的方法,以及是否有其他解决方案。

标签: python python-3.x


【解决方案1】:

您处于无限循环中 - k 将始终小于 1.5 的 i > 1 次方。 所以你一直在结果中添加项目(k)直到它溢出。

【讨论】:

  • 啊! a 应该是(2/3)。犯了这么明显的错误,我真是太愚蠢了!谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-17
  • 2022-07-22
  • 1970-01-01
  • 1970-01-01
  • 2013-05-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多