双倍的价值太大了

sup*_*erM 0 java double range

当a Double被赋值大于Double.MAX_VALUE?时,Java如何处理这种情况?

是否指定了标准行为?

ass*_*ias 9

是的,它在语言规范#4.2.4中定义:

溢出的浮点运算会产生有符号的无穷大.

在双打的情况下,结果将是Double.POSITIVE_INFINITY.

但是请注意,如果在编译时尝试将这么大的值赋值给double,则会出现编译错误:

double d = 1e100; //ok
double d = 1e300 * 1e300; //Double.POSITIVE_INIFINITY
double d = 1e900; //does not compile
Run Code Online (Sandbox Code Playgroud)

如果你需要处理非常大的数字,你也可以使用BigDecimal.