首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在for循环中使用整数变量的长度作为终止条件

问如何在for循环中使用整数变量的长度作为终止条件
EN

Stack Overflow用户
提问于 2017-07-15 16:22:02
回答 2查看 46关注 0票数 0

我有一个for循环,如:

代码语言:javascript
复制
for (int indexCount = 2, thirdNumber.ToString().Length!=1000; indexCount++)

当thirdNumber中有1000位数字时,我希望循环终止。我该怎么做?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-07-15 16:31:36

有1000位数字的int是不可能的。最大int值为2,147,483,647,只有10位数。据我所知,没有任何内置数据类型可以表示1000位数的数字,甚至是100位数。

编辑:A BigInteger可以容纳任意大的数字(谢谢布拉德利·乌夫纳)。您需要添加对System.Numerics程序集的引用。如果您使用/正在使用它作为您的数据类型,那么您最初对thirdNumber.ToString()!=1000的比较将是一个有效的检查,以确定它是否为1000位数字。

您还可以采取一种更基于数字的方法,并将正在检查的BigInteger与最小的1000位数字进行比较,即1后面是999个零。我不确定用这个大小的数字哪种方法会更快,虽然我怀疑两个BigIntegers之间的比较。

代码语言:javascript
复制
class Program
{
    static void Main(string[] args)
    {
        BigInteger minThousandDigits = BigInteger.Parse(new string('9', 999)) + 1;
        BigInteger thousandMoreDigits = BigInteger.Parse(new string('5', 1000));
        BigInteger notAThousandDigits = BigInteger.Parse(new string('9', 999));

        //Displays false
        Console.WriteLine($"Is the first number less than a thousand digits? {thousandMoreDigits < minThousandDigits}");

        //Displays true
        Console.WriteLine($"Is the second number less than a thousand digits? {notAThousandDigits < minThousandDigits}");

        Console.ReadLine();

    }
}
票数 3
EN

Stack Overflow用户

发布于 2017-07-15 16:41:00

使用do循环:

代码语言:javascript
复制
    int indexCount = 2;
    do 
    {
        // Whatever
        indexCount++;
    } while (thirdNumber.ToString().Length != 1000);

注意,在上面的示例中,循环总是至少执行一次。您可以通过使用break语句来避免这种情况:

代码语言:javascript
复制
    int indexCount = 2;
    do 
    {
        if (thirdNumber.ToString().Length == 1000) break;
        // Whatever
        indexCount++;
    } while (true);

以上假设长度最终将等于1000,否则就会有一个无限循环。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45120338

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档