I have quite a few questions regarding variables in C, and their supported sizes. Firstly, I need to be able to hold a number (as large as) 9999999999 in a variable. I'm not sure which type to use (I've been told float or double can do the job)... Which would any of you recommend for this?

Also, I would like to have support for significant digits after a decimal point of up to 1 million. I'm not sure how far a double or long double supports in the negative region, but I would obviously need a range (at least) like this: 10^1000000 to 10^-1000000. Is this possible, and if, with what variable type?

Lastly, I am curious to know why when I use a float or a double (especially), when I use printf to print the variable, no matter how long (after the decimal) I declare it, it will only show 6 significant digits (Including numbers before the decimal). For instance, if I declare something to be 1.2345678, when using printf() to print the variable, I only get 1.23456. Similarly, if I declare a variable to be .12345678, I only get .123456. Do I need to declare the number of spaces after the decimal point to get this to work? (i.e.
Code:
printf("%.10f\n", var);
Any responses would be GREATLY appreciated!