1.怎么理解这个问题?
答: 整型 ( int ) 的取值范围是
[
−
2
31
,
2
31
−
1
]
\left [ -2^{31},2^{31}-1 \right ]
[−231,231−1]
而溢出是指:一个数字不在这个范围,比如
2
100
{2^{100}}
2100
太大了,int接受不了,就溢出了。
2.怎么解决这个问题?
答: 一个简单的方式是使用 long ,这种数据类型可表示的范围比 int 大,是
[
−
2
63
,
2
63
−
1
]
\left [ -2^{63},2^{63}-1 \right ]
[−263,263−1]
还有一个简单的方式是使用 BigInterger 类,该类是大整数类,可以储存任意长度的整数,更多了解请百度。
复杂的方式是当然是自己写 高精度,这是一种算法,更多了解请百度。