JAVAの基礎 ~DOUBLE型が等しいかどうかの判定方法~

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类型!

 

--------------------------------------以下にテキストはありません---------- -------------------------------------------------- -

注: 学習のみを目的として、質問や参照を記録し、お互いに励まし合います。

おすすめ

転載: blog.csdn.net/qq_39715000/article/details/126197433