Java 中 double 和 float 原始型別的比較\n


如果我們比較 float 和 double 值,這些值以 .5 或 .0 或 .1235 結尾(以 5 或 0 結尾),則 == 運算子返回 true,否則返回 false。請看以下示例。

示例

即時演示

public class Tester {
   public static void main(String[] args) {
      double d1 = 2.5;
      float f1 = 2.5f;
      System.out.println(d1 == f1);

      double d2 = 2.4;
      float f2 = 2.4f;
      System.out.println(d2 == f2);
   }
}

輸出

true
false

此邏輯的原理是浮點數和小數的近似值。Float 資料型別是單精度 32 位 IEEE 754 浮點數,而 double 資料型別是雙精度 64 位 IEEE 754 浮點數。以 5 或 0 結尾的數字可以在 double 和 float 中準確表示。

如果是其他數字,則類似於將 0.3333 與 0.33333333 進行比較,後者精度更高。

正確比較 double 和 float 的方法

要比較 double 和 float,請檢查兩者之差是否大於或小於特定邊距。請看以下示例。

示例

即時演示

public class Tester {
   public static void main(String[] args) {
      double d1 = 2.5;
      float f1 = 2.5f;

      System.out.println(d1 == f1);

      double d2 = 2.4;
      float f2 = 2.4f;
      double margin = 0.0000001;

      System.out.println(compareNumbers(d2, f2, margin));
   }  

   private static boolean compareNumbers(double d, float f, double margin) {
      if(Math.abs(d - f) < margin) {
         return true;
      }        
      return false;
   }
}

輸出

true
true

更新時間: 2020 年 6 月 18 日

624 次瀏覽

開始你的 職業

完成此課程以獲得認證

開始學習
廣告