Java strictfp Keyword
Usage and Examples

strictfp Keyword in Java

The strictfp keyword in Java is used to ensure that floating-point calculations (float and double) produce consistent results across different platforms or processors. It forces the Java Virtual Machine (JVM) to follow IEEE 754 standards strictly, regardless of the underlying hardware's capabilities.

Why do we need strictfp?

On some hardware, floating-point precision can be higher than what IEEE 754 requires. This might result in small differences in calculations when the same Java program runs on different platforms. The strictfp keyword prevents these inconsistencies by enforcing standard rules for rounding, overflow, and underflow.

Where can strictfp be used?

You can apply strictfp to:

  • Classes
  • Interfaces
  • Methods

Note: You cannot use strictfp with variables or constructors.

Example 1: strictfp with a Class

public strictfp class Calculator {
    public double divide(double a, double b) {
        return a / b;
    }

    public static void main(String[] args) {
        Calculator c = new Calculator();
        System.out.println(c.divide(10.0, 3.0));
    }
}
3.3333333333333335

Explanation

The strictfp modifier on the class ensures that all floating-point operations within the class follow IEEE 754 standards strictly. Even if the CPU supports extra precision, this will be ignored in favor of consistent results.

Example 2: strictfp with a Method

public class Example {
    public strictfp double compute(double a, double b) {
        return a * b + 2.5;
    }

    public static void main(String[] args) {
        Example e = new Example();
        System.out.println(e.compute(2.0, 1.5));
    }
}
5.5

Explanation

Only the method compute follows the strict IEEE floating-point rules. Other methods in the class will not be affected unless they also use strictfp.

Example 3: strictfp with an Interface

public strictfp interface MathConstants {
    double PI = 3.141592653589793;
    double E = 2.718281828459045;
}

This ensures that any class implementing this interface will inherit floating-point constants that comply with IEEE 754 standards.

When to Use strictfp

Use strictfp when:

  • You need platform-independent floating-point behavior
  • Your application does scientific computations or simulations that demand precise reproducibility
  • You want to avoid subtle bugs caused by floating-point differences across JVM implementations

When You Can Skip It

If your program doesn’t require floating-point precision consistency across machines (e.g., simple business logic or UI code), you likely don’t need strictfp.

Points to Remember

  • strictfp guarantees consistent floating-point results across different platforms.
  • It enforces IEEE 754 standards.
  • Applies only to class, interface, and method declarations.
  • Cannot be applied to variables or constructors.
  • Useful for scientific and mathematical applications needing cross-platform consistency.