我已经查看了它的功能,但是实际上没有人举一个例子说明何时strictfp在Java中使用关键字吗?有人真的为此找到了用处吗?
strictfp
仅将其放在我所有的浮点运算上会有副作用吗?
Strictfp确保你从每个平台上的浮点计算中获得完全相同的结果。如果你不使用strictfp,则JVM实现可以自由使用额外的精度(如果可用)。
从JLS:
在FP-strict表达式中,所有中间值都必须是浮点值集或double值集的元素,这意味着所有FP-strict表达式的结果必须是IEEE 754算法对使用单格式和双格式表示的操作数预测的结果。在不受FP限制的表达式中,允许某个实现使用扩展的指数范围表示中间结果;粗略地说,最终结果是,在独占使用浮点值集或双精度值集可能导致上溢或下溢的情况下,计算可能会产生“正确答案”。
换句话说,这是确保Write-Once-Run-Anywhere实际上意味着Write-Once-Get-Equally-错误结果-Everywhere。
使用strictfp,你的结果是可移植的,没有它,它们将更可能是准确的。