如何打印双变量中包含的正确位数?

Arn*_*aba 1 c++

预期输出是:

123456789包含9位数字。

但给定的输出是:

1.23457e+08包含332位数字

来源:

#include <iostream>
using namespace std;
int main ()
{
  double number_1 = 123456789;
  double numberOfdigits = 1;
  double tmp = number_1;
    while (tmp /= 10)
      numberOfdigits ++;
        cout << "The Value " << number_1 << " contains " << numberOfdigits << " digits " << '\n';
}
Run Code Online (Sandbox Code Playgroud)

小智 5

不要使用 Double ,除非您不需要计算并获得确切的结果。在您的情况下,您可以根据需要使用intconst int

#include <iostream>
using namespace std;
int main ()
{
  int const number_1 = 123456789;
  double numberOfdigits = 1;
  int tmp = number_1;
    while (tmp /= 10)
    numberOfdigits ++;
    cout << "The Value " << number_1 << " contains " << numberOfdigits << " digits " << '\n';
}
Run Code Online (Sandbox Code Playgroud)

  • 答案并没有解释为什么“double”是一个糟糕的选择,或者为什么它在原始OP中不起作用。并且 `numberOfDigits` 也应该是整数。 (3认同)