java中浮點數的比較
阿新 • • 發佈:2020-11-18
首先來看兩個簡單的例子:
例一:
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