雙原語
double 是雙精度 64 位 IEEE 754 浮點數。
double example = -7162.37;
double myDouble = 974.21;
double anotherDouble = 658.7;
double addedDoubles = myDouble + anotherDouble; // 315.51
double subtractedDoubles = myDouble - anotherDouble; // 1632.91
double scientificNotationDouble = 1.2e-3; // 0.0012
由於儲存浮點數的方式,許多數字沒有精確的表示。
double notExact = 1.32 - 0.42; // result should be 0.9
System.out.println(notExact); // 0.9000000000000001
雖然使用 double 對於大多數應用來說都很好,但是 float 和 double 都不應該用來儲存貨幣等精確數字。相反,應該使用 BigDecimal 類
double 的預設值為 0.0d
public double defaultDouble; // defaultDouble == 0.0
注意: Double.POSITIVE_INFINITY,Double.NEGATIVE_INFINITY,Double.NaN 是 double 的值。NaN 代表無法確定的操作結果,例如劃分 2 個無限值。此外 0d 和 -0d 是不同的,但 == 產生真實:
double d1 = 0d;
double d2 = -0d;
System.out.println(d1 == d2); // true
System.out.println(1d / d1); // Infinity
System.out.println(1d / d2); // -Infinity
System.out.println(Double.POSITIVE_INFINITY / Double.POSITIVE_INFINITY); // NaN