我正在嘗試讀取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
我w anted只是32.0
,54.7
和-2
。我知道我可以指定用%.x
打印多少個小數位數,但是我需要打印與輸入中給定的數量一樣多的數字。
此外,那些while (true)
循環,因爲我不知道我會得到多少數字。
浮點設計不準確。 32.0可以很容易地轉到31.999999999999999這意味着返回到你輸入任何類型的浮點不可能... – Goz 2013-03-03 16:21:06
因此,閱讀它們作爲字符串 – deepmax 2013-03-03 16:23:02
嘗試將「%lf」更改爲「%2lf」 – TravellingGeek 2013-03-03 16:26:51