public class TestDieDai {
public static void main(String[] args) {
long a=2L;
for(int i=1;i<=8;i++){
a=a*a;
System.out.println("第"+i+"次:"+a);
}
}
}
我这么写的代码,运行后的结果为:
第1次:4
第2次:16
第3次:256
第4次:65536
第5次:4294967296
第6次:0
第7次:0
第8次:0
我用的类型是long呀,怎么第六次开始就是0了呢?应该没超范围吧?
什么符号位呀,初始值我要改成long a=3L,就会变成:
第1次:9
第2次:81
第3次:6561
第4次:43046721
第5次:1853020188851841
第6次:8733086111712066817
第7次:-9204772141784466943
第8次:-3310041070528564223
第五次就比上面的大了。
这是我用浮点数算出来的,题主可以去验证
2^63 = 9.22337204 × 10^18 这个是long的最大值
4294967296^2 = 1.84467441 × 10^19
1853020188851841^2 = 3.43368382 × 10^30 从3开始的第6次值就已经不对了