How I can calculate numbers in C++

  • Thread starter Jameson
  • Start date
  • #1
793
4
Who can tell me how I can calculate numbers to as many digits as I see fit? The normal libraries can only hold 19 or so, which is waaayyy less than I want. Any help is appreciated.

Jameson
 

Answers and Replies

  • #2
saltydog
Science Advisor
Homework Helper
1,590
3
Jameson said:
Who can tell me how I can calculate numbers to as many digits as I see fit? The normal libraries can only hold 19 or so, which is waaayyy less than I want. Any help is appreciated.

Jameson

You need to use multi-precision arithmetic. You can write your own or can get the code elsewhere. Essentially, the digits of a number (real or integer) are stored separately in arrays, classes whatever. And you do the arithmetic on the separate digits. There are elegant algorithms for doing subtraction, multiplication, division, and addition in multi-precision. Should be able to google for the algorithms.
 
  • #3
VietDao29
Homework Helper
1,424
3
Hi,
I think what you need is inputs of string. Then you can analyze the string and calculate them. For example, you want calculate 35 + 244
You will ask the user give you 2 strings "35", and "244", and the operator as well, i.e. :"+".
And here is what I did:
+ Make the 2 numbers have the same length "035", and "244"
+ Use the loop to convert to number and calculate each degit backwards, i.e. : 5 + 4, 3 + 4, and 0 + 2.
+ Print out the result.
It's a little bit more tricky if you work with rational numbers like "3.5", "2.44".
I finished the addition, subtraction, as well as multiplication, but not in C++, I programmed in DB. If you want, I can show you my work.
Viet Dao,
 
  • #4
Icebreaker
You can declare a 64-bit variable using

__int64 variable;

I'm not sure how many digits that will allow, but it's pretty big.
 
  • #5
dduardo
Staff Emeritus
1,891
3
The largest unsigned 64bit integer is 2^64-1 = 18446744073709551615

The largest signed 64bit integer is 2^63-1 = 9223372036854775807
 
Last edited:
  • #6
Hurkyl
Staff Emeritus
Science Advisor
Gold Member
14,950
19
Of course dduardo means 2^64 - 1 = 18446744073709551615 :smile:

__int64 will only work in microsoft compilers. (As will _int64 and int64)
In *nix systems, you'll want int64_t, or uint64_t. (they're in <inttypes.h>, I think)
For many compilers, long long will do it.

But as mentioned, you'll want to find a big number package.
 
Last edited:
  • #7
dduardo
Staff Emeritus
1,891
3
Hurkyl, your right. The signed figure is still correct.
 
  • #8
13
0
Headache. . . headache. . .
 

Related Threads on How I can calculate numbers in C++

  • Last Post
2
Replies
29
Views
5K
Replies
1
Views
144K
  • Last Post
Replies
2
Views
2K
  • Last Post
Replies
1
Views
3K
Replies
6
Views
3K
  • Last Post
Replies
4
Views
2K
Replies
0
Views
2K
Replies
1
Views
4K
Replies
4
Views
5K
Top