Java中double類型比較大小或相等的方法


在Java中int類型數據的大小比較可以使用雙等號,double類型則不能使用雙等號來比較大小,如果使用的話得到的結果將永遠是不相等,即使兩者的精度是相同的也不可以。下面介紹兩種比較double數據是否相等的方法。

第一種方法:轉換成字符串

如果要比較的兩個double數據的字符串精度相等,可以將數據轉換成string然后借助string的equals方法來間接實現比較兩個double數據是否相等。注意這種方法只適用於比較精度相同的數據,並且是只用用於比較是否相等的情況下,不能用來判斷大小。

第二種方法:使用sun提供的Double.doubleToLongBits()方法

該方法可以將double轉換成long型數據,從而可以使double按照long的方法(<, >, ==)判斷是否大小和是否相等。

例如:

  1. Double.doubleToLongBits(0.01) == Double.doubleToLongBits(0.01)
  2. Double.doubleToLongBits(0.02) > Double.doubleToLongBits(0.01)
  3. Double.doubleToLongBits(0.02) < Double.doubleToLongBits(0.01)

第三種方法:

double a = 0.001; 
double b = 0.0011; 
BigDecimal data1 = new BigDecimal(a); 
BigDecimal data2 = new BigDecimal(b); 
data1.compareTo(data2) 
非整型數,運算由於精度問題,可能會有誤差,建議使用BigDecimal類型!

當此 BigDecimal 在數字上小於、等於或大於 val 時,返回 -1、0 或 1。

第四種方法:

兩實數相等:兩實數的差在允許的范圍內認為相等既可認為是相等的。

范圍:1e-6(0.000001)

主要代碼:

int IsEqual(double a,double b){ return fabs(a-b) < 0.000001;}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM