如果为Double
分配的值大于Double.MAX_VALUE
,Java如何处理这种情况?
是否指定了标准行为?
答案 0 :(得分:9)
是的,它是在language specification #4.2.4:
中定义的溢出的浮点运算会产生有符号的无穷大。
如果是双打,则结果为Double.POSITIVE_INFINITY
。
但请注意,如果在编译时尝试将这么大的值赋值给double,则会出现编译错误:
double d = 1e100; //ok
double d = 1e300 * 1e300; //Double.POSITIVE_INIFINITY
double d = 1e900; //does not compile
如果您需要处理非常大的数字,也可以使用BigDecimal
。
答案 1 :(得分:0)
也许BigDecimal类对你很有意思。 使用这些类,您可以计算超出双倍范围的内容。