以下是引用CCCRonaldo在2013-12-9 23:24:41的发言:
double不是分配8个字节的吗,能表示最大整数是2^63-1,无符号型的是2^64-1,为什么不能超过2^52个?请版主指点新人一下
如果你说的是正确的,那么 double 和 long long 这两种类型岂不是重复了?long long 存的是整数,double保存的是浮点数。
double能表示的最大整数一般大约在1.7*10^308附近,不是2^63-1。
虽然这个范围很大,但不表示 -1.7*10^308 至 +1.7*10^308 范围的无穷个实数,double都能表示。
即使是 -1.7*10^308 至 +1.7*10^308 范围的有限个实数,double也不全能表示。
“double不是分配8个字节的吗,能表示最大整数是2^63-1,无符号型的是2^64-1”这句话说得很不严格,
应该说:8字节的数据类型,最多能表示2^64个不同的数。
之所以说“最多”,是因为类似于double这种某些特值用于表示值之外的状态了,而不像long long那样纯粹。
第二,能表示2^64个不同的数,不等于就用于表达 0 到 2^64-1