我编写此函数来计算并返回传递给该函数的数字的位数或长度。在您告诉它计算超过 10 位的数字中的数字之前,它一直很好用。在这些情况下,它只返回 1。
int digits(int z)
{
int counter = 1;
for ( double y = 9; z > y; y = (y*10) + 9)
{
counter++;
}
return counter;
}
最佳答案
在您的目标机器上,一个整数很可能是 32 位。如果有符号,整数的值介于(大约)-20 亿和 +20 亿之间。两个极端都是 10 位数字。
您可以更改您的代码以使用 64 位整数以获得更多里程。否则,您将需要使用自定义表示(即,编写您自己的大整数类)以允许任意大的数字。
关于c++ - 为什么这个函数不会计算超过 10 位数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21041603/