c++ - 为什么这个函数不会计算超过 10 位数字?

标签 c++ digits

我编写此函数来计算并返回传递给该函数的数字的位数或长度。在您告诉它计算超过 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/

相关文章:

c++ - 使用 std::map.insert ("xyz"时使用插入函数或仅使用 map[ind] ="xyz"有什么区别

C++ FMOD Studio 无法为 freq 的 FMOD DSP PARAMETER FFT 赋值。分析

regex - 正则表达式匹配之前解析过的多个字符

C++ 指向对象类型检查的指针

c++ - 在函数参数上放置两个常量符号有什么作用?

C++ 从数组列表中删除元素

javascript - 如何测试变量中的某个数字?

c - 凯撒密码奇怪的不需要的三位数代码打印输出

objective-c - 如何在 Objective C 中的 1 位整数左侧添加零?

Python - 除法结果中的有效位数