# How to Round Float or Double in Java

In this tutorial, you will learn how to round a Float or a Double value to 2 decimal places in Java.

## 1. Using BigDecimal

One of the ways to round a float or a double value is to use BigDecimal class.

`BigDecimal bigDecimalDouble = new BigDecimal(doubleValue);`

BigDecimal class allows us to set a scale and a rounding mode.

`bigDecimalDouble.setScale(2, RoundingMode.HALF_UP);`

Where:

• scale –  is a number of decimal points,
• RoundingMode.HALF_UP –  is a rounding mode used. Other rounding modes are:
• ROUND_UP,
• ROUND_DOWN,
• ROUND_CEILING,
• ROUND_FLOOR,
• ROUND_HALF_DOWN,
• ROUND_HALF_EVEN,
• ROUND_UNNECESSARY

Let’s see how it works.

### BigDecimal – Round double to 2 decimal points example

```import java.math.BigDecimal;
import java.math.RoundingMode;

public class RoundDouble {
public static void main(String args[]) {
double doubleValue = 11.8989;

BigDecimal bigDecimalDouble = new BigDecimal(doubleValue);
System.out.println(bigDecimalDouble);  // Prints 11.8988999999999993661958797019906342029571533203125

BigDecimal bigDecimalWithScale = bigDecimalDouble.setScale(2, RoundingMode.HALF_UP);
System.out.println(bigDecimalWithScale); // Prints 11.90

}
}
```

Similarly, you can use BigDecimal to round a float value to 2 decimal points.

### BigDecimal – Round float to 2 decimal points example

```import java.math.BigDecimal;
import java.math.RoundingMode;

public class RoundDouble {
public static void main(String args[]) {
float floatValue = 11.8989f;

BigDecimal bigDecimalFloat = new BigDecimal(floatValue);
System.out.println(bigDecimalFloat); // Prints 11.89890003204345703125
BigDecimal bigDecimalFloatWithScale = bigDecimalFloat.setScale(2, RoundingMode.HALF_UP);
System.out.println(bigDecimalFloatWithScale); // Prints 11.90

}
}
```

## 2. Using DecimalFormat

Another way to round a float or a double value to 2 decimal points is to use the DecimalFormat class. DecimalFormat class allows us to create an output pattern and then set a rounding mode that we want to apply to a value.

### Round to 2 decimal points

```DecimalFormat decimalFormat = new DecimalFormat("0.00");
decimalFormat.setRoundingMode(RoundingMode.HALF_UP);```

### Round to 1 decimal point

```DecimalFormat decimalFormat = new DecimalFormat("0.0");
decimalFormat.setRoundingMode(RoundingMode.HALF_UP);```

### Format Pattern “0.00” vs “#.##”

When creating a DecimalFormat object, there are two ways to set a formatting pattern:

1. new DecimalFormat(“0.00”)
2. new DecimalFormat(“#.##”)

Both of these formatting patterns work similarly, except that “#.##” will not display a digit if the last decimal point is zero. For example,

```if doubleValue = 11.90 then
BigDecimal("#.##") will print 11.9```

On the other hand, the formatting pattern “0.00” will always display a digit even if it is zero. For example,

```if doubleValue = 11.90
then BigDecimal("0.00") will print 11.90```

### Rounding Modes:

Other possible rounding modes are:

• ROUND_UP,
• ROUND_DOWN,
• ROUND_CEILING,
• ROUND_FLOOR,
• ROUND_HALF_DOWN,
• ROUND_HALF_EVEN,
• ROUND_UNNECESSARY

Let’s have a look at the complete example.

### Decimal Format – Round double to 2 decimal points example

```import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.DecimalFormat;

public class RoundDouble {
public static void main(String args[]) {
double doubleValue = 11.8989;

DecimalFormat decimalFormat = new DecimalFormat("0.00");
decimalFormat.setRoundingMode(RoundingMode.HALF_UP);

System.out.println(decimalFormat.format(doubleValue));      //11.90

}
}
```

### Decimal Format – Round float to 2 decimal points example

```import java.math.RoundingMode;
import java.text.DecimalFormat;

public class RoundFloat {
public static void main(String args[]) {
float floatValue = 11.8989f;

DecimalFormat decimalFormat = new DecimalFormat("0.00");
decimalFormat.setRoundingMode(RoundingMode.HALF_UP);

System.out.println(decimalFormat.format(floatValue));      //11.90

}
}
```

## 3. Using String.format(“%.2f”, floatValue)

Alternatively, you can use String.format() function to format the input value to 2 decimal points. Although, String.format() does not allow to change the rounding mode. The only rounding mode applicable is half-up.

```public class RoundFloat {
public static void main(String args[]) {

float floatValue = 11.80f;

System.out.println(String.format("%.2f", floatValue)); // Prints 11.80

}
}
```

I hope this tutorial was helpful for you.

There are many other useful tutorials you can find on this site. To find Java-related tutorials, check out the Java tutorials page.

Happy learning!