有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Double。最小值未按预期工作

我有下面的代码,但当mutuaInformation为零时,它不会通过if。知道怎么回事吗

        int largestEntropyIndex = Integer.MIN_VALUE;
        double largestMutualInfomation = Double.MIN_VALUE;
        for (int i = 0; i < attributes.size(); i++) {
            String attrName=this.attributes.get(i);
            double conditionalEntropy = calcConditionalEntropy(i,
                                                               instances,
                                                               this.attributeValues.get(attrName).size(),
                                                               this.labels.size());

            System.out.println("conditional entropy is: "+conditionalEntropy);
            double mutualInformation = entropy - conditionalEntropy;
            if (mutualInformation > largestMutualInfomation){
                largestMutualInfomation = mutualInformation;
                largestEntropyIndex = i;
            }

共 (2) 个答案

  1. # 1 楼答案

    执行简单的代码,你就会得到它

    public static void main(String args[]) {
        System.out.println("Min value for Double : " + Double.MIN_VALUE);
        if(0 > Double.MIN_VALUE) {
            System.out.println("0 is greater than Double.MIN_VALUE");
        }
        else {
            System.out.println("0 is less than Double.MIN_VALUE");
        }
    }
    

    输出是

    Min value for Double : 4.9E-324
    0 is less than Double.MIN_VALUE
    

    如您所见Double.MIN_VALUE的值大于0。因此你会注意到这种行为

  2. # 2 楼答案

    常数Double.MIN_VALUE等于4.9E-324。虽然很小,但仍然大于绝对值0