Java BigDecimal

In this post, we will see about Java BigDecimal class.

BigDecimal class contains Arithmetic operations, rounding, comparison, scaling. It provides high precision arithmetic operations, so generally used to handle numbers in banking and financial domain.

[toc]

Java BigDecimal provides a lot of options to control rounding. You can choose various rounding modes such as round half up or round up down to do the rounding.

Here is simple way to create a BigDecimal.We will use String based constructor for creating BigDecimal object.

        BigDecimal bigDecimal=new BigDecimal("12.23");
        System.out.println(bigDecimal)

An example to set scale upto 2 decimal places for BigDecimal:

        BigDecimal b = new BigDecimal("10.12545");
        b=b.setScale(2, BigDecimal.ROUND_HALF_UP);
        System.out.println("BigDecimal Rounding to 2 decimal places: "+b);

As BigDecimal is immutable just like String,it always returns new object when you perform any operation on it. That’s why we need to assign b.setScale(2, BigDecimal.ROUND_HALF_UP) to b reference variable again.

Constructors

[table id=3 /]

Methods

[table id=5 /]

Let’s see some examples with the help of FAQs on BigDecimal.

FAQs

How can you compare two BigDecimals?

You can compare two BigDecimals using compareTo method.

import java.math.*;
class BigDecimalDemo {

    public static void main(String[] args) {

        // create 2 BigDecimal objects
        BigDecimal b1 = new BigDecimal("60.02");
        BigDecimal b2 = new BigDecimal("20".52);

        //comparing b1 and b2
        int result = b1.compareTo(b2); 

        if( result == -1 )
            System.out.println("First BigDecimal is less than Second BigDecimal");  
        else if( result == 0)
            System.out.println("First BigDecimal is equal to Second BigDecimal");
        else if( result == 1 )
            System.out.println("First BigDecimal is greater than Second BigDecimal");
    }
}

When you run above program, you will get below output:

First BigDecimal is greater than Second BigDecimal

How to set scale in case of BigDecimals

package org.arpit.java2blog;

import java.math.BigDecimal;

public class BigDecimalToStringMain {

    public static void main(String[] args) {

        BigDecimal b = new BigDecimal("11.274675");
        b=b.setScale(3, BigDecimal.ROUND_HALF_UP);
        System.out.println("BigDecimal Rounding to 3 decimal places: "+b);
    }
}

When you run above program, you will get below output:

BigDecimal Rounding to 3 decimal places: 11.275

How to convert String to BigDecimal?

You can simply use BigDecimal’s constructor to convert String to BigDecimal

package org.arpit.java2blog;

import java.math.BigDecimal;

public class BigDecimalToStringMain {

    public static void main(String[] args) {

        String currency="23.12";
        BigDecimal bigDecimalCurrency=new BigDecimal(currency);
        System.out.println("Converted String currency to bigDecimalCurrency: "+bigDecimalCurrency);
    }
}

When you run above program, you will get below output:

Converted String currency to bigDecimalCurrency: 23.12

How to convert BigDecimal to String?

You can simply use BigDecimal’s toString method to convert BigDecimal to String.

package org.arpit.java2blog;

import java.math.BigDecimal;

public class BigDecimalToStringMain {

    public static void main(String[] args) {
        BigDecimal bigDecimal=new BigDecimal("12.92");
        String toStringBigDec=bigDecimal.toString();
        System.out.println(toStringBigDec);
    }
}

When you run above program, you will get below output:

12.92

When you run above program, you will get below output:

Converted String currency to bigDecimalCurrency: 23.12

How to add two BigDecimals in java?

You can use BigDecimal’s add method to divide two BigDecimals.

package org.arpit.java2blog;

import java.math.BigDecimal;

public class BigDecimalDivideMain {

    public static void main(String args[])
    {
        BigDecimal b1=new BigDecimal("10.2");
        BigDecimal b2=new BigDecimal("2.4");
        BigDecimal result=b1.add(b2);
        System.out.println(result.toString());
    }
}

When you run above program, you will get below output:

12.6

How to subtract two BigDecimals in java?

You can use BigDecimal’s substract method to divide two BigDecimals.

package org.arpit.java2blog;

import java.math.BigDecimal;

public class BigDecimalDivideMain {

    public static void main(String args[])
    {
        BigDecimal b1=new BigDecimal("10.2");
        BigDecimal b2=new BigDecimal("2.4");
        BigDecimal result=b1.subtract(b2);
        System.out.println(result.toString());
    }
}

When you run above program, you will get below output:

7.8

How to multiply two BigDecimals in java?

You can use BigDecimal’s multiply method to multiply two BigDecimals.

package org.arpit.java2blog;

import java.math.BigDecimal;

public class BigDecimalDivideMain {

    public static void main(String args[])
    {
        BigDecimal b1=new BigDecimal("10.2");
        BigDecimal b2=new BigDecimal("2.4");
        BigDecimal result=b1.multiply(b2);
        System.out.println(result.toString());
    }
}

When you run above program, you will get below output:

24.48

How to divide two BigDecimals in java?

You can use BigDecimal’s divide method to divide two BigDecimals.

package org.arpit.java2blog;

import java.math.BigDecimal;

public class BigDecimalDivideMain {

    public static void main(String args[])
    {
        BigDecimal b1=new BigDecimal("10.2");
        BigDecimal b2=new BigDecimal("2.4");
        BigDecimal result=b1.divide(b2);
        System.out.println(result.toString());
    }
}

When you run above program, you will get below output:

4.25

How to remove trailing zero from BigDecimal?

You can use stripTrailingZeros to remove trailing zero from BigDecimal.

package org.arpit.java2blog;

import java.math.BigDecimal;

public class BigDecimalDivideMain {

    public static void main(String args[])
    {
        BigDecimal b1=new BigDecimal("10.200");
        System.out.println(b1.stripTrailingZeros().toPlainString());
    }
}

When you run above program, you will get below output:

10.2

That’s all about BigDecimal in java.

References:

https://docs.oracle.com/javase/7/docs/api/java/math/BigDecimal.html

[social_share share_on="facebook,twitter,linkedin,whatsapp"][post_navigator in_same_term="true"]

Leave a Reply

Your email address will not be published. Required fields are marked *

Subscribe to our newletter

Get quality tutorials to your inbox. Subscribe now.