1. 程式人生 > 實用技巧 >java中浮點數的比較

java中浮點數的比較

java中浮點數的比較

首先來看兩個簡單的例子:

例一:

float f = 0.1f;
double d = 0.1;
System.out.println(f==d);

結果為:false

例二:

float n = 131213112f;
float m = n+1;
System.out.println(n==m);

結果為:true

float和double型別主要是為了科學計算和工程計算而設計的。它們執行二進位制浮點運算,這是為了在廣泛的數字範圍上提供較為精確的快速近似計算而精心設計的。然而,它們並沒有提供完全精確的結果。因此,我們不應該應用於精確計算的場合。例如銀行業務等。

可以使用BigDecimal型別進行加減乘除運算

Java BigDecimal型別的 加減乘除運算不能基本資料型別一樣樣,需要呼叫方法:

加法:add

減法:subtract

乘法:multiply

除法:divide

但能實現非常精準的結果。

例如:

BigDecimal a = new BigDecimal("0.1");
BigDecimal b = new BigDecimal("0.1");
BigDecimal s = null;
s = a.subtract(b);
System.out.println("a-b="+s);

結果為:a-b=0.0