首页  >  文章  >  Java  >  Java中的严格fp

Java中的严格fp

WBOY
WBOY原创
2024-08-30 15:36:00391浏览

Java中strictfp的主要功能是在浮点变量运算时在每个平台上提供相同的结果。回到过去,当 James Gosling 和他的团队开发 Java 时,该语言的主要方面之一是平台独立性。在不同的机器上编译、解释和执行相同的代码,并确保结果相同且不被处理器操纵。

在不同平台上计算浮点时,由于CPU处理浮点的硬件能力,结果可能会有所不同。 Strictfp 确保您在所有平台上获得精确的浮点输出。随着 IEEE 754(浮点运算标准),strictfp 在 JVM 1.2 版本中引入。

开始您的免费软件开发课程

网络开发、编程语言、软件测试及其他

对于不同的CPU,标准精度可能会有所不同;对于 x86 机器,32 位精度与 62 位精度不同。 strictfp的使用确保了当相同的代码在不同的平台上执行时,输出不会因为精度不同而被操纵,这在更高精度的平台上工作得很好。将 strictfp 理解为 FP Strict,意思是 Floating Point Strict。

Strictfp 中的语法

strictfp 很简单,以关键字 strictfp 开头。以下是类、接口和方法的语法:

1。班级

strictfp class sample1{
// code here will me implicitly strictfp.
}

2。接口

strictfp interface sample2 {
// methods here will be implicitly strictfp
}

3。方法

class India {
strictfp void population()
}

在上面的示例中,我们只是为类和接口添加了关键字 strictfp。上面的示例演示了如何必须使用 strictfp 关键字,下面是不使用 strictfp 关键字的示例。

class sample1{
strictfp float a;
}

在这里,为变量分配 strictfp 关键字是行不通的。它应严格与类或接口一起传递。

在 Strictfp 中实现的示例

以下是在 Strictfp 中实现的示例:

示例#1

我们现在将通过在代码示例中实现相同的方法来演示 strictfp 关键字的工作原理。  以下是相同的程序:

代码:

public class Test  {
public strictfp double add()
{
double number1 = 10e+10;
double number2 = 6e+08;
return (number1+number2);
}
public static strictfp void main(String[] args)
{
Test example = new Test();
System.out.println(example.add());
}
}

输出:

Java中的严格fp

对上述代码的解释:我们从类 Test 定义开始,然后我们创建了一个具有 double 数据类型的方法,并为其分配了 strictfp 关键字。在 add() 中,我们创建了两个名为 number1 和 number2 的双精度数据类型变量,在下一行中,该方法返回这两个变量的相加。后来我们有了我们的主类,它也配备了strictfp,并且里面的代码块继承了strictfp属性。创建了我们类的一个新对象,最后,我们有了输出打印语句,它只是打印两个变量的相加值。

示例#2

现在让我们在不同的程序中演示相同的 strictfp 关键字。这里我们不做任何计算;相反,我们将在 float 变量中传递一个值,并使用 strictfp 关键字打印它。

代码:

public class new_strictfp {
float f = 9.381f;
strictfp public void displayValue(){
System.out.println(f);
}
public static void main(String[] args) {
new_strictfp Demo = new new_strictfp ();
Demo.displayValue();
}
}

输出:

Java中的严格fp

上面代码的解释:这是我们实现 strictfp 关键字的另一个例子。我从公共类开始,创建了一个具有浮点数据类型和值的新变量。然后创建一个方法来打印浮点值,并且在我们的主类中,我们初始化了我们类的一个对象。在对象之后,我们有输出语句,它调用我们之前创建的方法。在这里,我们创建的方法启用了 strictfp,这意味着分配的浮点值将按原样打印。

要记住的规则

与任何编程语言中的任何其他关键字一样,Java 中的 strictfp 有其用途和规则,为了达到预期结果,必须遵循指定的规则。  现在让我们在实现关键字之前先了解一些规则。

  • strictfp 关键字不能用构造函数实现;它与类、接口和方法配合得很好。
  • 当使用接口或类声明 strictfp 时,它将为其中的所有方法和嵌套类型隐式实现 strictfp。
  • strictfp 可以用抽象类或接口实现,但不能用抽象方法实现。
  • 与构造函数一起,strictfp 不能与变量一起使用;参考前面提到的示例代码。

遵循上述规则将确保 strictfp 的正确使用,并避免浮点精度可能产生不同结果的差异。

Java 中 Strictfp 的优点

以下是该关键字带来的优势。从开发人员的角度来看,使用 strictfp 的优点是多种多样的;下面列出了一些:

  • 各种机器上浮点结果的准确性。
  • strictfp 利用浮点运算的精度和速度。
  • 它对 32 位和 64 位完全不偏不倚,并且显然专注于更好的结果。
  • 最后,使用这个关键字没有任何缺点,不会增加时间压缩性或执行速度。
  • 重要的是要理解,如果没有 strictfp 关键字及其函数,JVM 和 JIT 编译器可以根据目标机器的 CPU 精度点来操作浮点输出。
  • 这只是确保 Java 编程语言基础知识的另一种更好的方法,即“一次编写,随处运行”,并且除了源计算机之外,不会在任何地方得到不同或错误的结果。

结论 – Java 中的 Strictfp

我们了解了 Java 中的 Strictfp 关键字是什么,然后我们探索了其用途,并且不使用该关键字。它是在 JVM 1.2 中引入的,遵循 IEE 754 的浮点标准。我们用语法演示了 strictfp 关键字,然后在示例中实现了它们。它是确保相同结果的修饰符。

以上是Java中的严格fp的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn