strictfp Keyword Usage and Examples
Learn how the Java strictfp keyword ensures consistent floating-point behavior across platforms. Includes beginner-friendly explanation and code examples.
This reference explains strictfp Keyword Usage and Examples through its syntax, examples and boundaries. Use the linked course lessons when the surrounding Java concepts are unfamiliar.
Use this reference
Identify the documented behavior, read a complete example and check its inputs before applying it.
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
Java · example discussed here
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));
}
}
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
Java · example discussed here
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));
}
}
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
Java · example discussed here
public strictfp interface MathConstants {
double PI = 3.141592653589793;
double E = 2.718281828459045;
}
strictfpguarantees consistent floating-point results across different platforms.- It enforces IEEE 754 standards.
- Applies only to
class,interface, andmethoddeclarations. - Cannot be applied to variables or constructors.
- Useful for scientific and mathematical applications needing cross-platform consistency.
Using this reference
Check the example’s types, inputs and documented behavior before copying it into an application. Some APIs require external libraries, files or platform services; consult their setup notes.
Related explanations: Java Data Types - Primitive and Non-Primitive, Java Class - Blueprint of Objects, Exceptions in Java Introduction.
Supporting documentation: Official Java learning guide.
Reference checks are optional and do not count toward course progress.