尝试在您的 Python 3.3.2 IDLE 中输入这个,希望我不是唯一想知道并且愿意理解为什么会发生这种情况的人。
>>> n = 331
>>> d = 165.0 # float number
>>> a = 174
>>>
>>> a**d % n
Traceback (most recent call last):
File "<pyshell#6>", line 1, in <module>
a**d % n
OverflowError: (34, 'Result too large')
>>> d = int(d)
>>> a**d % n
330
float 到底是如何工作的,为什么会这样?谢谢。
请您参考如下方法:
float 是一个 IEEE 754 double-precision floating point number ,这意味着它可以容纳一个最大值(略高于 10**308)。*
int 是一个任意精度的整数,它增长的字节数与保存任何值所需的字节数一样多,因此它不会溢出。
这在 Numeric Types - int, float, complex 下的文档中进行了描述.
* 从技术上讲,Python 不保证它是 IEEE 754 double;它只是说它通常是一个 C double,而一个 C double 通常是一个 IEEE 754 double...要查看您平台上的实际限制,请尝试 sys。 float_info.
