雙原語
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