Java 中 double 和 float 原生型別的比較\n
如果用 .5 或 .0 或 .1235(以 5 或 0 結尾)比較 float 值和 double 值,則 == 運算子返回 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 和小數的近似值。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
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言
C++
C#
MongoDB
MySQL
Javascript
PHP