⬅ Previous Topic
Java static KeywordNext Topic ⮕
Java super Keyword⬅ Previous Topic
Java static KeywordNext Topic ⮕
Java super Keywordstrictfp
Keyword in JavaThe 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.
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.
strictfp
be used?You can apply strictfp
to:
Note: You cannot use strictfp
with variables or constructors.
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
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.
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
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
.
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.
Use strictfp
when:
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
.
strictfp
guarantees consistent floating-point results across different platforms.class
, interface
, and method
declarations.⬅ Previous Topic
Java static KeywordNext Topic ⮕
Java super KeywordYou can support this website with a contribution of your choice.
When making a contribution, mention your name, and programguru.org in the message. Your name shall be displayed in the sponsors list.