Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to add two numbers of any length in java?

How to add two numbers of any length in java?

Say for example, in java long size is 64 bit. So the maximum range is -9223372036854775808 to 9223372036854775807. Am i right?

So if we want to add a number which is greater than this like below, i got a error

" Integer Number too large"

long a = 9223372036854775807L;
long b = 9223372036854775808L;

In C, we can take those numbers as char array, by traversing through the address of each char and use some data structure, we can add two numbers of any size.

How to do it java. Can we traverse through the address of each character in String.


Thanks for your responses.

I have tried to code by passing the numbers as string and add each character from the end. It works fine for me.

Is there any big difference between the addition of two very large numbers using BigInteger and the method, i specified above (add each character from end and store remainder in temporary variable and goes on). Is the underlying mechanism of BigInteger is same as my code(add each character from end)?

Thanks.

like image 824
Manoj Avatar asked Sep 20 '10 05:09

Manoj


People also ask

How do you add two long numbers in Java?

The sum() method of Java Long class is used to add two long values according to the '+' operator.

How do you add two numbers in a string in Java?

Adding Numbers and StringsJava uses the + operator for both addition and concatenation. Numbers are added. Strings are concatenated.

How do you add two long numbers?

1) Reverse both strings. 2) Keep adding digits one by one from 0'th index (in reversed strings) to end of smaller string, append the sum % 10 to end of result and keep track of carry as sum/10. 3) Finally reverse the result.


1 Answers

You can use a BigInteger.

BigInteger a = new BigInteger("9223372036854775807");
BigInteger b = new BigInteger("9223372036854775808");
BigInteger result = a.add(b);

The BigInteger will let you work with numbers of any size, but you lose a considerable amount of performance over long or int.

like image 52
jjnguy Avatar answered Oct 11 '22 12:10

jjnguy