天天看點

java中兩個double類型資料的大小

非整型數,運算由于精度問題,可能會有誤差,建議使用BigDecimal類型,具體 BigDecimal的詳細說明參考jdk開發幫助文檔。    Double有方法euqals(Double) 傳回boolean還有static intcompare(double d1,double d2)比較兩個指定的 double 值。

    intcompareTo(Double anotherDouble)對兩個 Double 對象所表示的數值進行比較。

  1. import java.math.BigDecimal;
  2. public class DoubleCompare {
  3. public String compare(BigDecimal val1, BigDecimal val2) {
  4.     String result = "";
  5.     if (val1.compareTo(val2) < 0) {
  6.         result = "第二位數大!";
  7.     }
  8.     if (val1.compareTo(val2) == 0) {
  9.         result = "兩位數一樣大!";
  10.     }
  11.     if (val1.compareTo(val2) > 0) {
  12.         result = "第一位數大!";
  13.     }
  14.     return result;
  15. }
  16. public static void main(String[] args) {
  17.     double a = 0.01;
  18.     double b = 0.001;
  19.     BigDecimal data1 = new BigDecimal(a);
  20.     BigDecimal data2 = new BigDecimal(b);
  21.     System.out.print(new DoubleCompare().compare(data1, data2));
  22. }
  23. Double沒有的,double有 Double是對象,看兩個對象是否值相同,調用 equals方法成都網站優化

    這也是解決double精度比較的方法。另外還有一種方法,你可以用寫一個 double成員屬性,然後在eclipse中重寫equals方法,你會看到他是怎麼處理兩個double值是否相同的 sun公司用的是Double.doubleToLongBits(要比較的double值) != Double.doubleToLongBits(另一個double值) 這種方式

jdk