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

在JVM上进行浮点运算是否会在所有平台上产生相同的结果?

巴星华
2023-03-14
问题内容

我在运行于多台计算机上的应用程序中使用Java,并且所有计算机都需要获得相同的数学运算结果。使用Java的浮点原语是否安全?还是应该只使用定点数学库?


问题答案:

一般而言,不。但是,您可以使用strictfp表达式:

在FP-strict表达式中,所有中间值都必须是浮点值集或double值集的元素,这意味着所有FP-strict表达式的结果必须是IEEE
754算法对使用单格式和双格式表示的操作数预测的结果。

在不受FP限制的表达式中,为实现留出一定的余地,可以使用扩展的指数范围来表示中间结果。粗略地说,最终结果是,在独占使用浮点值集或双精度值集可能导致上溢或下溢的情况下,计算可能会产生“正确答案”。



 类似资料:
  • 问题内容: 我需要在Java中执行一些浮点运算,如下面的代码所示: 这是为了模拟Betfair Spinner小部件作为输出给出的值的范围。 Java中的浮点算术似乎引入了一些意外错误。例如,我得到2.180000000000001而不是2.18。浮点数有什么用,您不相信对它们执行的算术结果吗?我该如何解决这个问题? 问题答案: 如果您需要精确的十进制值,则应使用java.math.BigDeci

  • 问题内容: 假设我在同一台计算机上同时运行两个Java程序。这些程序将在单个JVM实例中运行还是在两个不同的JVM实例中运行? 问题答案: 如果您使用命令(从命令行)开始每个命令,它们将作为完全独立的JVM运行。 “程序”可以作为在一个JVM中运行的单独线程启动。

  • 问题内容: 我有一大堆具有相同标签的节点。我希望能够在Jenkins中运行一个作业,该作业在具有相同标签的 所有 节点上执行并同时执行。 我看到了在詹金斯中使用矩阵配置选项的建议,但我只能想到一个轴(标签组)。当我尝试运行该作业时,似乎它只执行一次而不是300次(该标签组中的每个节点1次)。 我的另一条轴应该是什么?还是…有一些插件可以做到这一点?我曾经尝试过NodeLabel参数插件,然后选择“

  • 我试过什么? 如果我使用Cipher.GetInstance(“des”)解密“12345”.GetBytes(),将引发异常。 这是否意味着使用RSA时,类密码可以自动检测是否应该使用encrypt或decrypt(忽略我在初始化Cipher类时指定的模式参数)?

  • 我被要求连接到公司大型机上的Db2数据库。我得到了主机名、端口号和数据库。我能够使用Java和IBM JDK版本1.8以及Db2 Universal JDBC驱动程序成功地连接到它。现在我已经连接到它,我如何找出什么是下面躺着的大型机平台。哪里是z/OS、OS/400还是VSE?是否有任何SQL查询可以获得该平台信息?另外,如何找出DB2的版本?

  • 从…起http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/gc01/index.html,我发现JVM记录生成依赖于对象: 在下一个小GC,同样的事情发生在伊甸园空间。将删除未引用的对象,并将引用的对象移动到幸存者空间。然而,在这种情况下,它们被移动到第二个幸存者空间(S1)。此外,来自第一幸存者空间(S0)上最后一个次要G