我什么时候应该使用“strictfp” java中的关键字?
我已经了解了它的作用,但是有没有人真的有一个例子,说明何时在Java中使用
strictfp
关键字?有没有人真正找到了这个用途?
将它放在我的所有浮点运算上是否会产生任何副作用?
没有找到相关结果
已邀请:
8 个回复
替秀宝
笛驮型迸
,则JVM和JIT编译器可以根据需要计算浮点计算的许可。为了速度,他们很可能会将计算委托给您的处理器。当
开启时,计算必须符合IEEE 754算术标准,实际上,这可能意味着JVM将进行计算。 那你为什么要用
?我可以看到的一个场景是在分布式应用程序(或多人游戏)中,无论底层硬件或CPU是什么,所有浮点计算都需要是确定性的。什么是权衡?最有可能是执行时间。
闯舱酮
。 strictfp - Java词汇表 浮点硬件的计算精度更高,并且具有比Java规范要求的更大范围的值。如果某些平台比其他平台更精确,那将会令人困惑。在方法或类上使用
修饰符时,编译器会生成严格遵守Java规范的代码,以便在所有平台上获得相同的结果。如果没有
,它是否稍微宽松一点,但不要太宽松,以至于使用Pentium中的保护位来提供80位精度。 最后是实际的Java语言规范,§15.4FP严格表达式: 在FP-strict表达式中,所有中间值必须是浮点值集或双值集的元素,这意味着所有FP严格表达式的结果必须是IEEE 754算法在使用单格式和双格式表示的操作数上预测的结果。在不是FP-strict的表达式中,为实现授予了一些余地,以使用扩展指数范围来表示中间结果;粗略地说,净效应是在独占使用浮点值集或双值集可能导致上溢或下溢的情况下,计算可能会产生“正确答案”。 不过,我个人从来没有使用它。
坝硷操
舜辉
埠仙俊
纫合峭
是一个关键字,可以用作类或方法的非非访问修饰符(但绝不是变量)。将类标记为
意味着类中的任何方法代码都符合浮点的IEEE 754标准规则。 如果没有该修饰符,方法中使用的浮点可能会以平台相关的方式运行。有了它,您可以预测浮点的行为,无论JVM运行的底层平台如何。缺点是如果底层平台能够支持更高的精度,那么
方法将无法利用它。 如果你没有将一个类声明为
,你仍然可以通过将方法声明为
来逐个方法地获得
行为。 ~SJJSun®认证程序员Java™6 - Kathy Sierra&伯特贝茨〜
臀博