c ++ pow (2,1000) est normal à gros pour le double, mais ça marche. Pourquoi?

le code:

#iclude <math.h>

int main(){
double somenumber = pow(2, 1000);
printf("%lf\n", somenumber);
return 0;
}

- je obtenir ce nombre énorme:
10715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376

C'est évidemment de gros pour le double. Comment cela fonctionne?

source d'informationauteur 0xbadc0de