1

私は3つのフロートを読み込もうとしています。floatとdoubleを使用してこれを実行しようとしましたが、両方で同じ動作が得られます。

入力例:

3 1 2
32.0 54.7 -2

最初の行に3つの整数、2番目の行に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.054.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 に答える