Codectionary / Developer documentation / Java

BigDecimal and Explicit Rounding

BigDecimal performs arbitrary-precision decimal arithmetic with an explicit scale. String constructors preserve decimal input exactly; division may require a rounding policy. Save as Main.java and run with a Java 17+ JDK: java Main.java.

Syntax

new BigDecimal("2.345").setScale(2, RoundingMode.HALF_UP)

Examples

BigDecimal and Explicit Rounding

Save as Main.java and run with a Java 17+ JDK: java Main.java.

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

public class Main {
  public static void main(String[] args) throws Exception {
    BigDecimal price = new BigDecimal("2.345");
    System.out.println(price.setScale(2, RoundingMode.HALF_UP));
    System.out.println(new BigDecimal("1.0").compareTo(new BigDecimal("1.00")) == 0);
  }
}
  1. Expected output: 2.35 true
  2. setScale returns a rounded value without mutating price. compareTo compares numeric value; equals also considers scale.

Best practices

  • Construct from decimal strings, not approximate double values.
  • State rounding and equality policies at application boundaries.

Runtime & versions

Java Virtual Machine. Feature availability depends on the language and runtime version used by your project; consult the official reference below.

Java Language Specification

Specifications & further reading