小编典典

什么时候应该在Java中使用“ strictfp”关键字?

java

我已经查看了它的功能,但是实际上没有人举一个例子说明何时strictfp在Java中使用关键字吗?有人真的为此找到了用处吗?

仅将其放在我所有的浮点运算上会有副作用吗?


阅读 837

收藏
2020-03-16

共1个答案

小编典典

Strictfp确保你从每个平台上的浮点计算中获得完全相同的结果。如果你不使用strictfp,则JVM实现可以自由使用额外的精度(如果可用)。

从JLS:

在FP-strict表达式中,所有中间值都必须是浮点值集或double值集的元素,这意味着所有FP-strict表达式的结果必须是IEEE 754算法对使用单格式和双格式表示的操作数预测的结果。在不受FP限制的表达式中,允许某个实现使用扩展的指数范围表示中间结果;粗略地说,最终结果是,在独占使用浮点值集或双精度值集可能导致上溢或下溢的情况下,计算可能会产生“正确答案”。

换句话说,这是确保Write-Once-Run-Anywhere实际上意味着Write-Once-Get-Equally-错误结果-Everywhere。

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

2020-03-16