なぜ自動ボクシング/アンボックス化がここで失敗しているのですか?

StackOverflow https://stackoverflow.com/questions/6800546

  •  22-10-2019
  •  | 
  •  

質問

以下のプログラムでは、結果があります 0.0 未満と見なされます Double.MIN_VALUE. 。なんで?

解決策があります(一緒に作業します Doubles のみ使用してください compareTo)そして、私はここで解散が失敗している理由を理解したいと思います。

import java.util.Date;
import java.util.Calendar;
import java.math.BigDecimal;

public class Test {

  public static void main(String[] args) {
    double max = 99999.9999;
    double min = Double.MIN_VALUE;
    Double test = 0.0;

    System.out.println(max > test); // expect true; is true
    System.out.println(test > min); // expect true; is false
  }
}
役に立ちましたか?

解決

による Javadocs :

min_value

タイプダブルの最小の正の非ゼロ値を保持する一定、2-1074.

言い換えれば、それは0よりも大きいです。

他のヒント

あなたは読むべきです double.min_value 仕様。それは可能な最小値であるが正の二重値であり、それは0.0を超えることを意味します。

A constant holding the smallest positive nonzero value of type double, 2-1074.
It is equal to the hexadecimal floating-point literal 0x0.0000000000001P-1022
and also equal to Double.longBitsToDouble(0x1L). 

Double.MIN_VALUE = 4.9E-324 これはまだ正の数です。私はあなたが探していると思います min = - Double.MAX_VALUE

私によると、オートボクシングには問題ありません。おそらく、<and>オペレーターでうまく機能するはずのdouble.negative_infinityまたはdouble.positive_infinityのようなものを使用する必要があるだけです。たとえば、それに注意してください

-Double.MAX_VALUE > Double.NEGATIVE_INFINITY
本当です!

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top