非整型數,運算由于精度問題,可能會有誤差,建議使用BigDecimal類型,具體 BigDecimal的詳細說明參考jdk開發幫助文檔。 Double有方法euqals(Double) 傳回boolean還有static intcompare(double d1,double d2)比較兩個指定的 double 值。
intcompareTo(Double anotherDouble)對兩個 Double 對象所表示的數值進行比較。
- import java.math.BigDecimal;
- public class DoubleCompare {
- public String compare(BigDecimal val1, BigDecimal val2) {
- String result = "";
- if (val1.compareTo(val2) < 0) {
- result = "第二位數大!";
- }
- if (val1.compareTo(val2) == 0) {
- result = "兩位數一樣大!";
- }
- if (val1.compareTo(val2) > 0) {
- result = "第一位數大!";
- }
- return result;
- }
- public static void main(String[] args) {
- double a = 0.01;
- double b = 0.001;
- BigDecimal data1 = new BigDecimal(a);
- BigDecimal data2 = new BigDecimal(b);
- System.out.print(new DoubleCompare().compare(data1, data2));
- }
-
Double沒有的,double有 Double是對象,看兩個對象是否值相同,調用 equals方法成都網站優化
這也是解決double精度比較的方法。另外還有一種方法,你可以用寫一個 double成員屬性,然後在eclipse中重寫equals方法,你會看到他是怎麼處理兩個double值是否相同的 sun公司用的是Double.doubleToLongBits(要比較的double值) != Double.doubleToLongBits(另一個double值) 這種方式