I am dealing with a math example. I need to use 12 digit number for my code. So which datatype should i use, to use the number in my functions?
Asked
Active
Viewed 1.8k times
4 Answers
5
If you have a 64-bit integer type, I'd go with that, since it gives you the (18 full digits) range:
−9,223,372,036,854,775,808 to
+9,223,372,036,854,775,807
For other tasks (even bigger integers or massive floating point values), I use GMP, the GNU multi-precision library. It's performance is impressive.

paxdiablo
- 854,327
- 234
- 1,573
- 1,953
2
you can also use "unsigned long long" with format specifier "llu". It works fine for 12 digit number in C.
unsigned long long i=600851475143;
printf("%llu",i);

Prashant
- 71
- 1
- 10
2
64-bit integers (long
, int64_t
, unsigned long
, uint64_t
) should do the trick, or if you need decimals, double
or long double
.

Delan Azabani
- 79,602
- 28
- 170
- 210
-
3If you need decimals you're out of luck in pure C; `double` and `long double` are floating point types, not decimal ones. – Joey Aug 13 '10 at 11:33
-
No. I *did* mention 64-bit integers too, which can hold well over 12 digits even when signed! – Delan Azabani Aug 13 '10 at 11:35
-
what should i use for example while printing them? "%ld" was for long as far i remembered? – DesperateCoders Aug 13 '10 at 11:35
-
Yes. `%ld` is the correct format specifier. Use `%lu` if it's an `unsigned long`, however. – Delan Azabani Aug 13 '10 at 11:35
-
Check out `
`. It has printf() / scanf() format specifiers for the intX_t types (among others). – DevSolar Aug 13 '10 at 11:40 -
2You should not recommend `long` as a 64-bit type. It's 32-bit on most systems and the C standard only requires it to be at least 32-bit. – R.. GitHub STOP HELPING ICE Aug 13 '10 at 11:52