java - strictfp 敏感 JVM 示例

标签 java

我们都非常了解 strictfp 的工作原理。

像这样:

package com.hk.basicjava.tests.strictfp;

import java.util.*;

public class StrictFP {
    public static void main(String[] argv) {
        double d = Double.MIN_VALUE; 
        System.out.println("non strictfp : " + notStrictFP(d)); // may be 4.9E-324
        System.out.println("strictfp : " + strictFP(d)); // should be 0
    }

    static double notStrictFP(double a) {
        return (a / 2 ) * 2;
    }
    static strictfp double strictFP(double a) {
        return (a / 2 ) * 2 ;
    }
}

但是,有没有人知道特定的硬件/操作系统(可能还有 JRE)组合,使用和不使用 strictfp 的方法返回的结果是不同的 说明符?

我尝试了几种组合,但没有什么区别。

最佳答案

您得到一个 double 可以准确表示的数字:Double.MIN_VALUE;所以我对没有区别并不感到惊讶。如果您使用生成无法保持其精度的数字的算术,则相同的算术会产生两个不同的结果。 strictfp 在这种情况下会起作用,JVM 两次都以相同的方式近似回答。

关于java - strictfp 敏感 JVM 示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14512044/

相关文章:

java - 如何以编程方式在 Liferay DXP 中的每个类别下创建子类别?

java - 如何通过 fragment 从MainActivity调用服务绑定(bind)器?

Java glob 查找文件

java动画,使对象每 'x'秒改变颜色

java - FastVectorHighlighter 短语突出显示不适用于词干提取

Java Scheduled Executor 服务功能

java - TomEE - 无法为 Web 模块 : null 创建注释扫描器

java - 在考虑本地时区的情况下,将日期转换为java中的纪元秒

java - 当没有剩余空间时,向 ArrayList 添加一个元素

java - XSSFWorkbook、XSSFSheet 不起作用 - NetBeans 8.0.2