Java では、int 型データの大小比較には二重等号を使用できますが、double 型では二重等号を使用してサイズを比較することができないため、データの精度が高くても結果は常に不等になります。 2つは同じです。double データが等しいかどうかを比較する 2 つの方法を以下に説明します。
最初の方法: 文字列に変換する
比較する 2 つの double データの文字列精度が等しい場合、データを文字列に変換し、文字列の equals メソッドを使用して、2 つの double データが等しいかどうかを間接的に比較できます。
注:この方法は、同じ精度のデータを比較する場合にのみ適しており、等しいかどうかを比較するためにのみ使用され、サイズを判断するために使用することはできません。
Float.toString(453.2348f).equals(Float.toString(0.342f))
Double.toString(0.8456d).equals(Float.toString(0.242f))
2 番目の方法: SUN が提供する DOUBLE.DOUBLETOLONGBITS() メソッドを使用します。
このメソッドはdoubleをlongデータに変換することができるので、doubleはlong(<,>,==)の方法に従ってサイズや等価性を判定することができます。
Double.doubleToLongBits(0.01) == Double.doubleToLongBits(0.01)
Double.doubleToLongBits(0.02) > Double.doubleToLongBits(0.01)
Double.doubleToLongBits(0.02) < Double.doubleToLongBits(0.01)
3 番目の方法:
double d1=0.0000001、double d2=0d のような double 型の場合、2 つのデータ d1 と d2 が等しいかどうかを判断する場合、通常はそのまま使用されません。
if(d1==d2)
第四の道
double a = 0.001;
double b = 0.0011;
BigDecimal data1 = new BigDecimal(a);
BigDecimal data2 = new BigDecimal(b);
data1.compareTo(data2)
非整型数,运算由于精度问题,可能会有误差,建议使用BigDecimal类型!
--------------------------------------以下にテキストはありません---------- -------------------------------------------------- -
注: 学習のみを目的として、質問や参照を記録し、お互いに励まし合います。