折叠 编辑本段 简介
Strictfp -- Java 关键字。
s光初告乎季话广明殖trictfp 关键字可策望事际女应用于类、接口或方法。使用 strictfp 关键孩严江浓远笑低字声明一个方法时,岩刻还在该方法中所有的float和double表达式都严格遵守FP-strict的限制,符合IEEE-754规范。当对一个类或接口使用 strictfp 关键字时,该类中的所有代码,包括嵌套类型中的初始设定值和代码,都将严格地进行计算。严格约束意味着所有表达式的结果都必须是 IEEE 754 算法对操作数预期的结果,以单精度和双精度格式表示。
如果你想让你的浮点运算更加精确,而且不会因为不似器胜相西北纸施效同的硬件平台所执行的结果不一致的话,可以用关键字strictfp.
折叠 编辑本段 示例
示例 1
下面的示例演示了一个使用 strictfp 修饰的然顶尼整叫训获肉符声明的类。
// Example of precision control with strictfp
public strictfp class MyClass
{
public MyClass(){}
public 钢景军传考static void main(真核一界String[] args)
{
floa基讨两t aFloat = 0.671游0339f;
dou又ble aDouble = 0.04150553411984792d;
double sum = aFloat + aDouble;
float quotient = (float)(aFloat / aDouble);
System.out.p谁形什较我宪京汉rintln("float: " + aFloat);
System.out.prin妈范乎最讨尼tln("double: " + aDouble);
System.o战跳灯ut.println("sum: " + sum);
System.out.print矛推冷ln("quotient: " + quotient);
}
}
示例输出
float: 0.6710339
d道调振集ouble: 0.04150553411984792
sum: 0.712增5394529774223口办单岩鲜防派8
quotient: 16.1673355
示例 2
下面的示例演示了一个使用 strictfp 修饰符声明的方法。
// Example of precision con界买确杂散洋trol with strictfp:
public class MyClass2
{
public float aFloat;
public double aDouble;
public MyClass2(){}
public strictfp double add(float a, double b)
{
return (a + b);
}
public static void main(String[] args王宣挥单政曲析弦企固)
{
MyClass2 myC决lass2 = new MyClass2();
myClass2.aFloat = 0计染督触.6710339f;
myClass2.aDouble = 0.04150553411984792d;
double sum = myCla先耐补多用ss2.add(myClass2.aFloat, myClass2.aDouble);
Sys雷机乎令补京助加阳色tem.out.println("float: " + myClass2.aFloat);
System.out.println("double: " + myClass2.aDouble);
System.out.println("sum: " + sum);
}
}
示例输出
float: 0.6710339
婷历守重措终护穿沙演double: 0.04150553411984792
sum: 0.71253945297742238