java strictfp 关键字_Java 关键字 strictfp

java strictfp 关键字_Java 关键字 strictfp1 介绍自 Java2 以来 Java 语言增加了一个关键字 strictfp 即 strictfloatp 精确浮点 strictfp 关键字可应用于类 接口或方法 使用 strictfp 关键字声明一个方法时 该方法中所有的 float 和 double 表达式都严格遵守 FP strict 的限制 符合 IEEE 754 规范 当对一个类或接口使用 strictfp 关键字时 该类中的所有代码 包括

1.介绍

自Java2以来,Java语言增加了一个关键字strictfp,即 strict float point (精确浮点)。

strictfp 关键字可应用于类、接口或方法。

使用 strictfp 关键字声明一个方法时,该方法中所有的float和double表达式都严格遵守FP-strict的限制,符合IEEE-754规范。当对一个类或接口使用 strictfp 关键字时,该类中的所有代码,包括嵌套类型中的初始设定值和代码,都将严格地进行计算。严格约束意味着所有表达式的结果都必须是 IEEE 754 算法对操作数预期的结果,以单精度和双精度格式表示。

在FP-strict表达式中,所有中间值必须是浮点值集或双值集的元素,这意味着所有FP严格表达式的结果必须是IEEE 754算法在使用单格式和双格式表示的操作数上预测的结果。在不是FP-strict的表达式中,为实现授予了一些余地,以使用扩展指数范围来表示中间结果; 粗略地说,净效应是在独占使用浮点值集或双值集可能导致上溢或下溢的情况下,计算可能会产生“正确答案”。

—-JLS

换句话说,它是关于确保Write-Once-Run-Anywhere实际上意味着Write-Once-Get-Equally-Werong-Results-Everywhere。

使用strictfp,您的结果是可移植的,没有它,它们更可能是准确的。

2.实例

/

* strictfp关键字,基本不用

* 跨平台时可能需要用

* 输出0.

*/

private static strictfp void strictfpTest(){

float aFloat = 0.f;

double bDouble = 0.0;

double sum = aFloat + bDouble;

System.out.println(sum);

}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/231519.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号