双原语
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