In a program i have to calculate pow(2,N) where 0<N<=1000. which data type is suitable for this?
I have used unsigned long long int but its range is also limited.

it is not showing the correct result. i mean the printf("%f",i) is valid upto number i=56 which has 17 digits in its answer but for number exceeding 56 its shows 17 significant digits and all other digits are zeroes.

for eg
your code will give "144115188075855870" for 57 but the exact answer is "144115188075855872"...

I don't understand why it happens to you. But here I copy paste my code and output. I use gcc to compile. Not sure whether the compiler is causing the difference in my case. But here it goes.

In order to verify it's only a printing problem in your case, do an inverse power on the value that you get and see if you get exactly 2 as the answer. I have showed it in my previous post.

I have an Epson receipt printer (Model number: TM-T88V), but I cannot use it. I do not have a POS (point of sale) software that will let me do what ...