1

我正在尝试读取 3 个浮点数。我试图用浮点数和双打来做到这一点,但我对两者的行为相同。

输入示例:

3 1 2
32.0 54.7 -2

第一行 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]);

打印它们时,我得到:

32.000000 54.700000 -2.000000

我只想要32.0,54.7-2. 我知道我可以指定要打印多少个小数位%.x,但我需要打印输入中给我的尽可能多的小数位。

此外,那些while (true)循环在那里是因为我不知道我会得到多少个数字。

4

2 回答 2

6

普通浮点类型无法实现您想要的。如果要打印与输入具有相同小数位数的数字,则必须:

  • 将输入读取为字符串。
  • 自己解析并保存小数位数。
  • 再次打印时使用它。
于 2013-03-03T16:22:07.900 回答
1

当您使用scanf("%d",...)它时,它会读取字符并将它们解析为int.

如果要在输入时显示它们,则必须将它们存储为字符串。

如果您需要将它们用作double然后将它们转换为数字。

于 2013-03-03T16:24:35.870 回答