Java 中的 strictfp 关键字
strictfp 是一个修饰符,代表严格浮点,在 java 的基础版本中没有引入,因为它是在 Java 1.2 版本中引入的。它在 java 中用于限制浮点计算,并确保在浮点变量中执行操作时每个平台上的结果相同。 浮点计算依赖于平台,即当类文件在不同平台(16/32/64 位处理器)上运行时,会获得不同的输出(浮点值)。为了解决这类问题,在 JDK 1.2 版本中,通过遵循 IEEE 754 浮点计算标准,引入了 strictfp 关键字。
注意: strictfp 修饰符仅用于类、接口和方法,但不适用于变量,如下图所示:
说明 1: 类的关键字用法
strictfp class Test {
// All concrete methods here are implicitly strictfp.
}
说明 2: 接口的关键字用法
strictfp interface Test {
// All methods here becomes implicitly
// strictfp when used during inheritance.
}
class Car {
// strictfp applied on a concrete method
strictfp void calculateSpeed(){}
}
图解 3: 带变量的关键词用法
strictfp interface Test {
double sum();
// Compile-time error here
strictfp double mul();
}
从以上插图中可以得出如下一些结论:
- 当用 strictfp 修饰符声明类或接口时,类/接口中声明的所有方法以及类中声明的所有嵌套类型都隐式地是 strictfp。
- strictfp 不能与抽象方法一起使用。但是,它可以与抽象类/接口一起使用。
- 因为接口的方法是隐式抽象的,所以 strictfp 不能与接口内部的任何方法一起使用。
例
Java 语言(一种计算机语言,尤用于创建网站)
// Java program to illustrate strictfp modifier
// Usage in Classes
// Main class
class GFG {
// Method 1
// Calculating sum using strictfp modifier
public strictfp double sum()
{
double num1 = 10e+10;
double num2 = 6e+08;
// Returning the sum
return (num1 + num2);
}
// Method 2
// Main driver method
public static void main(String[] args)
{
// Creating object of class in main() method
GFG t = new GFG();
// Here we have error of putting strictfp and
// error is not found public static void main method
System.out.println(t.sum());
}
}
输出:
本文由高拉夫·米格拉尼供稿。如果你喜欢 GeeksforGeeks 并想投稿,你也可以使用write.geeksforgeeks.org写一篇文章或者把你的文章邮寄到 review-team@geeksforgeeks.org。看到你的文章出现在极客博客主页上,帮助其他极客。 如果你发现任何不正确的地方,或者你想分享更多关于上面讨论的话题的信息,请写评论。
版权属于:月萌API www.moonapi.com,转载请注明出处