作为其他计算的一部分,我注意到有时对整数输入先应用float(),然后应用int()函数。可以安全地假设:
int(float(x)) == x如果x是整数?
为什么?(或者为什么不呢?)它有没有记录在案?
发布于 2011-07-12 07:57:31
只要您有足够的位数来表示significant_digits和exponent,所有significant_digits * (2 ** exponent)形式的数字都有一个精确的浮点数表示形式。大多数平台使用IEEE754的double表示,Python使用平台的double表示。IEEE754双精度编码具有用于exponent的11位和用于significant digits的52位。只要你的数字符合这些界限,它们就会像预期的那样出现。
请参阅Python's docs on floating point representation和维基百科在floating points上的文章。
发布于 2011-07-12 07:43:45
如果x需要比双精度浮点数提供的精度更高的精度,则比较将失败。
>>> int(float(10**23))
99999999999999991611392L发布于 2011-07-12 07:41:55
>>> x = 10**300
>>> int(float(x)) == x
Falsehttps://stackoverflow.com/questions/6657995
复制相似问题