当前位置: 首页 > 面试题库 >

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

何越
2023-03-14
问题内容

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

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


问题答案:

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

从JLS:

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

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

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



 类似资料:
  • 问题内容: 什么时候应该使用Apache Commons的Validate.isTrue,什么时候应该只使用’assert’关键字? 问题答案: 可以断言(实际上通常是断言),因此,例如,它们对于验证用户输入没有用。

  • 问题内容: 我知道他们两个都禁用了Nagle的算法。 我什么时候应该/不应该使用它们中的每一个? 问题答案: 首先,不是所有人都禁用Nagle的算法。 Nagle的算法用于减少有线中更多的小型网络数据包。该算法是:如果数据小于限制(通常是MSS),请等待直到收到先前发送的数据包的ACK,同时累积用户的数据。然后发送累积的数据。 这将对telnet等应用程序有所帮​​助。但是,在发送流数据时,等待A

  • 问题内容: 在该类中,有两个字符串,和。 有什么不同?我什么时候应该使用另一个? 问题答案: 如果你的意思是和则: 用于在文件路径列表中分隔各个文件路径。考虑在上的环境变量。您使用a分隔文件路径,因此在上将是;。 是或用于拆分到特定文件的路径。例如在上,或

  • 问题内容: 一个理想的例子是什么时候确切地使用Java中的特定接口,以及适用的任何特定规则。 问题答案: 集合框架是一个不错的选择。 因此,你可以编写如下代码: 如果将来你想使用say 或自己的界面更改实现,那么你要做的就是将第一行更改为: 其余代码将继续进行。

  • 我想知道什么时候可以有效地使用。我不确定到底有多有用,有三个原因。 (请将start和end视为整数。) > 如果我想要一个数组,,下面的代码要快得多。 我不认为仅仅获取从到的数字是有用的。我可以将

  • 问题内容: 有哪些现实的例子可以理解断言的关键作用? 问题答案: 断言(通过assert关键字)是在Java 1.4中添加的。它们用于验证代码中不变式的正确性。切勿在生产代码中触发它们,并表示存在错误或滥用代码路径。可以在运行时通过命令上的选项将其激活,但默认情况下未启用它们。 一个例子: