6

私たちは皆、 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 ;
    }
}

しかし、strictfp指定子がある場合とない場合のメソッドによって返される結果に違いがある特定のハードウェア/ OS(およびおそらくJRE)の組み合わせを知っている人はいますか?

いくつかの組み合わせを試しましたが、違いはありませんでした。

4

1 に答える 1

0

double が正確に表現できる数値を取得しています: Double.MIN_VALUE; 違いがないことは驚くことではありません。精度を維持できない数値を生成する演算を使用すると、同じ演算で 2 つの異なる結果が生成される可能性があります。この場合、strictfp は機能し、JVM はどちらの場合も同じように答えを近似します。

于 2015-09-28T14:20:18.497 に答える