我刚刚开始学习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进行浮点计算?在
input()
仅当它实际看到类似于float的内容时才给您一个float;如果它看起来像一个整数,那么您将得到一个整数。请改用float(raw_input())
。在现在,关于溢流。在
旧版本的Python不会自动将
int
升级为long
,这意味着您可以拥有的最大整数是有符号的32位或64位;任何高于这个值都会导致溢出。由于表达式中包含整数(见上文),因此可能会破坏类型的最大值,从而导致出现异常。在相关问题 更多 >
编程相关推荐