在 Java 中运行 For 循环超过十亿次
Running a For Loop over billion times in Java
有没有办法在
i > INT_MAX_VALUE
处运行 for 循环
我知道INT_MAX_VALUE等于2,147,483,647
我无法想象这是不可能的,但是否有变通办法?
非常感谢大家。
您必须将 i
设为 long
,这样它可以取大于 Integer.MAX_VALUE
的值。如果您在循环条件中使用文字数字,请附加 'L' 以使用 long
文字,这样您就可以使用大于 Integer.MAX_VALUE
.
的文字值
循环与 general.But 中的整数类型无关,在这种情况下,您可以简单地使用 long 类型而不是 int 类型。
for(long i=0;i<max;i++){
// as max is long type and max can take values upto 9,223,372,036,854,775,807
//code
}
有 其他 种数据类型比简单的 int
范围更广。例如:
for (long num = 0; num < 1000000000000L; num++) ...
这将使您达到大约 9 quintillion (9,223,372,036,854,775,807
)。如果您需要更多,您可能不想考虑 range,而是 time 运行循环 - 每秒十亿次迭代,需要 290 年多一点:-)
BigInteger bi_ = new BigInteger("1000000000000000000");
for(;true;) {
System.out.println(bi_);
bi_ = bi_.add(new BigInteger("1"));
if(bi_.equals(new BigInteger("1000000000000000000000000000"))) {
System.out.println(bi_);
break;
}
}
Above for loop start from 1 quintillion and end with 1 octillion
// One quintillion --> 10^18 = 1,000,000,000,000,000,000
// One octillion --> 10^27 = 1,000,000,000,000,000,000,000,000,000
有没有办法在
i > INT_MAX_VALUE
处运行 for 循环
我知道INT_MAX_VALUE等于2,147,483,647
我无法想象这是不可能的,但是否有变通办法?
非常感谢大家。
您必须将 i
设为 long
,这样它可以取大于 Integer.MAX_VALUE
的值。如果您在循环条件中使用文字数字,请附加 'L' 以使用 long
文字,这样您就可以使用大于 Integer.MAX_VALUE
.
循环与 general.But 中的整数类型无关,在这种情况下,您可以简单地使用 long 类型而不是 int 类型。
for(long i=0;i<max;i++){
// as max is long type and max can take values upto 9,223,372,036,854,775,807
//code
}
有 其他 种数据类型比简单的 int
范围更广。例如:
for (long num = 0; num < 1000000000000L; num++) ...
这将使您达到大约 9 quintillion (9,223,372,036,854,775,807
)。如果您需要更多,您可能不想考虑 range,而是 time 运行循环 - 每秒十亿次迭代,需要 290 年多一点:-)
BigInteger bi_ = new BigInteger("1000000000000000000");
for(;true;) {
System.out.println(bi_);
bi_ = bi_.add(new BigInteger("1"));
if(bi_.equals(new BigInteger("1000000000000000000000000000"))) {
System.out.println(bi_);
break;
}
}
Above for loop start from 1 quintillion and end with 1 octillion // One quintillion --> 10^18 = 1,000,000,000,000,000,000 // One octillion --> 10^27 = 1,000,000,000,000,000,000,000,000,000