Java provides two classes to perform high-precision numbers operation are BigInteger
and BigDecimal
. These two classes are same as wrapper classes for all numeric primitives but these have no primitive counter parts.
One can do all type of arithmetical operation which can be done on primitive numbers. Only difference is you have to call methods of these two classes instead of operators. These two classes BigInteger
and BigDecimal
operations are obviously slower because you will get more accurate results.
BigInteger
supports arbitrary-precision integers. This means that you can accurately represent integral values of any size without losing any information during operations.
BigInteger Example
BigInteger sum = BigInteger.valueOf(0); for(int i = 2; i < 5000; i++) { if (isPrim(i)) { sum = sum.add(BigInteger.valueOf(i)); } }
BigInteger
is an immutable class. So whenever you do any arithmetic, you have to reassign the output to a variable.
BigDecimal
is for arbitrary-precision fixed-point numbers, you can use these for accurate monetary calculations
BigDecimal Example
BigDecimal one = new BigDecimal(1); BigDecimal oneTenth = one.divide(new BigDecimal(10)); BigDecimal sum = oneTenth.add(oneTenth).add(oneTenth);
BigDecimal
is an immutable class. So whenever you do any arithmetic, you have to reassign the output to a variable.