double x = 9.29;
double y = 8.69;
double diff = floor((x - y)*100+0.5)/100.0;
これにより 0.6 の diff が得られますが、0.60 (小数点以下 2 桁) が必要です。
0.6 と 0.60 は (数学的に) 同じであるため、double の値は 0.6 です。必要なのは、値を計算するときではなく、値を出力するときに精度を設定することです。
これは、
cout << setprecision (2) << diff << endl;
また
printf("%.2f\n", diff);
C++ を使用している場合は、次のようにする必要があります。
cout.precision(2);
cout << fixed << diff << "\n";
C を使用している場合は、これを試してください。
printf("%.2e\n", diff);
このprecision
関数は、浮動小数点値を表す挿入操作で書き込まれる最大桁数を決定します。したがって、このコードを実行すると、
0.60
presion を 3 に設定すると、次のようになります。
0.600
解決策を試しましたが、うまくいきませんでした。私はこのようなものを持っていました。
cout << "balance owing: " << balOwed[i] << endl;
注: balOwed[i] は「double」型の「配列」です。forループの下にありました。とにかく、これは「Balance owing: 1234.00」のような出力を与えます。ただし、「Balance owing: 1234」のような出力しか出ませんでした。
私は使用してみました:
cout.presicion(2);
cout << "balance owing: " << balOwed[i] << endl;
うまくいきませんでした。最終的に私にとってうまくいったのは、次のコードでした:
cout.setf(ios::fixed);
cout.precision(2);
cout << "balance owing: " << balOwed[i] << endl;
皆さんにお知らせするために、setprecision(2) も試してみましたが、新しいライブラリを含める必要がありました。しかし、それもうまくいきませんでした。それが役に立てば幸い!