为什么Python对float计算抛出一个“OverFlow”异常?

2024-10-01 07:11:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我刚刚开始学习Python(抱歉,不要在这篇文章上声明作业,因为它不是)。{我给自己做了一些有意义的练习

这个特殊的“溢出”问题,我收到一些浮点数计算只是困惑我。在

这是我收到的错误消息:

Traceback (most recent call last):
  File "./lab0102.py", line 28, in <module>
    payment = PMT(r, n, P)
  File "./lab0102.py", line 19, in PMT
    return round(P * ((r *((1+r)**num_pmts)) / ((1+r)**num_pmts)))
OverflowError: (34, 'Numerical result out of range')

我的代码是:

^{pr2}$

我所做的一切都是通过尝试类型转换输入,使用一些包装操作来舍入或指定小数点精度。我甚至使用Decimal模块尝试以字符串格式打印出Decimal,看看我的逻辑缺陷在哪里。在

有人在这一点上教我如何用Python进行浮点计算?在


Tags: inpy声明错误作业linenumfile
1条回答
网友
1楼 · 发布于 2024-10-01 07:11:02

input()仅当它实际看到类似于float的内容时才给您一个float;如果它看起来像一个整数,那么您将得到一个整数。请改用float(raw_input())。在

现在,关于溢流。在

旧版本的Python不会自动将int升级为long,这意味着您可以拥有的最大整数是有符号的32位或64位;任何高于这个值都会导致溢出。由于表达式中包含整数(见上文),因此可能会破坏类型的最大值,从而导致出现异常。在

相关问题 更多 >