Python中的float
和int
的大小比较相对于其他语言来说,实现上可能复杂一些。Python的float
相当于C中的double
,而Python的int
实际上是由多个32位或64位整数拼接而成的高精度整数,其表示的精度和范围完全有可能比double
类型更大。
显然,(1)将浮点数转换成整数进行比较是不可行的,那样会丢失精度;而(2)Python中的整数是高精度整数,在内存足够大的情况下可以非常大,远大于double
所能表示的范围;并且(3)C的long
有63位精度,而double
仅有53位,因此也不能仅因转换后的比较结果相等就判定转换前的数值也相等。