双原语

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