程序读取太多十进制的情况

Dav*_*mes 1 c++ floating-point stdio

我正在尝试阅读3个花车.我尝试用浮动和双打来​​做这个,但我对两者都有相同的行为.

输入示例:

3 1 2
32.0 54.7 -2
Run Code Online (Sandbox Code Playgroud)

第一行有3个整数,第二行有3个浮点数:

我怎么读:

vector<int> order;
vector<double> numbers;
unsigned int order_number;
double number;
char input_character;

while (true)
{
  scanf("%d", &order_number);
  order.push_back(order_number);

  scanf("%c", &input_character);

  if (input_character == ' ')
    continue;
  else
    break;
}

while (true)
{
  scanf("%lf", &number);
  numbers.push_back(number);

  scanf("%c", &input_character);

  if (input_character == ' ')
    continue;
  else
    break;
}

printf("%d %d %d\n", order[0], order[1], order[2]);
printf("%lf %lf %lf\n", numbers[0], numbers[1], numbers[2]);
Run Code Online (Sandbox Code Playgroud)

打印时,我得到:

32.000000 54.700000 -2.000000
Run Code Online (Sandbox Code Playgroud)

我想要32.0,54.7 而且-2.我知道我可以指定要打印的小数位数%.x,但我需要打印输入中给出的数量.

此外,那些while (true)循环是因为我不知道我将获得多少数字.

us2*_*012 6

使用普通浮点类型无法实现所需的功能.如果要打印与输入相同的小数位数,则必须:

  • 将输入作为字符串读取.
  • 自己解析并保存小数位数.
  • 再次打印时使用它.