【问题标题】:Running a For Loop over billion times in Java在 Java 中运行超过十亿次的 For 循环
【发布时间】:2015-03-03 15:37:09
【问题描述】:

有没有办法在哪里运行 for 循环

i > INT_MAX_VALUE

我知道 INT_MAX_VALUE 等于 2,147,483,647

我无法想象这是不可能的,但如果有解决办法吗?

非常感谢各位。

【问题讨论】:

  • 你有没有考虑过使用long?
  • 或者BigInteger类...
  • 还是无符号整数?还是长长的?或者来自#include <stdint.ht>的 int64_t
  • 或只是for(int i = 0; true; i++)
  • @selbie- 看到java的标签,你可能发布了关于C的文章。

标签: java for-loop int


【解决方案1】:
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;
        }
    }
上面的 for 循环从 1 quintillion 开始,以 1 octillion 结束 // 一五分之一 --> 10^18 = 1,000,000,000,000,000,000 // 一个 octillion --> 10^27 = 1,000,000,000,000,000,000,000,000,000

【讨论】:

  • 你应该解释你的代码唯一答案。仅代码的答案经常被否决,甚至可能被删除。
  • 由于 Integer、Long 和 Double 有限制,这里的示例是使用 BigInteger 来处理非常大的数字,例如 One quintillion。这意味着要看到这个 for 循环的完成必须等待几年。
【解决方案2】:

其他数据类型比简单的int 范围更广。例如:

for (long num = 0; num < 1000000000000L; num++) ...

这将使您最多获得大约 9 quintillion (9,223,372,036,854,775,807)。如果您需要更多,您可能需要考虑的不是 range 而是运行循环所需的 time - 每秒十亿次迭代,这将需要 290 多年的时间 :-)

【讨论】:

  • 我会在 3 分钟内接受您的答复。我现在明白了,这显然是一个比我想象的要简单得多的问题。非常感谢@paxdiablo
【解决方案3】:

循环通常与整数类型无关。但是在这种情况下,您可以简单地使用 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
}

【讨论】:

    【解决方案4】:

    您必须将i 设为long,以便它可以采用大于Integer.MAX_VALUE 的值。如果您在循环条件中使用文字数字,请附加“L”以使用 long 文字,以便您可以使用大于 Integer.MAX_VALUE 的文字值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-12
      • 2021-11-21
      • 2023-01-04
      • 1970-01-01
      相关资源
      最近更新 更多