Doubt in c++

Why something like printf("%.0f\n",pow(2,1001)) gives correct output even though it is supposed to give correct output upto pow(2,64)?

No its not giving the correct output. Its just giving the first 17 digits correctly

Its not giving correct output