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?
+3
A:
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
2010-08-13 11:32:43
If you need decimals you're out of luck in pure C; `double` and `long double` are floating point types, not decimal ones.
Joey
2010-08-13 11:33:33
No. I *did* mention 64-bit integers too, which can hold well over 12 digits even when signed!
Delan Azabani
2010-08-13 11:35:13
what should i use for example while printing them? "%ld" was for long as far i remembered?
DesperateCoders
2010-08-13 11:35:20
Yes. `%ld` is the correct format specifier. Use `%lu` if it's an `unsigned long`, however.
Delan Azabani
2010-08-13 11:35:45
Check out `<inttypes.h>`. It has printf() / scanf() format specifiers for the intX_t types (among others).
DevSolar
2010-08-13 11:40:38
i did it long long tag and %lld done the trick.
DesperateCoders
2010-08-13 11:42:32
You 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..
2010-08-13 11:52:01
+2
A:
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
2010-08-13 11:44:06