我正在尝试阅读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)
循环在那里,因为我不知道我将获得多少数字。
答案 0 :(得分:6)
使用纯浮点类型无法实现所需。 如果要打印与输入具有相同小数位数的数字,则必须:
答案 1 :(得分:1)
当您使用scanf("%d",...)
时,它会读取字符并将其解析为int
。
如果你想在输入时显示它们,你必须将它们存储为字符串。
如果您需要将它们用作double
,请将它们转换为数字。