雙原語

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 對於大多數應用來說都很好,但是 floatdouble 都不應該用來儲存貨幣等精確數字。相反,應該使用 BigDecimal

double 的預設值為 0.0d

public double defaultDouble;    // defaultDouble == 0.0

注意: Double.POSITIVE_INFINITYDouble.NEGATIVE_INFINITYDouble.NaNdouble 的值。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