0

私は、ユーザーが入力した値に基づいてガソリンに費やされた合計金額を出力するプログラムに取り組んでいます。小数点以下2桁の値を出力したいのですが、プログラムは、合計がどうあるべきかを出力するのではなく、合計が何であれ丸めます。私は初心者ですが、なぜ正しく機能しないのかわかりません。

double gasPrice = 3.87;
double gallonsPumped = 0;



cout<<"How many gallons of gasoline (Diesel) were purchased today:"<<endl;
cin>>gallonsPumped;
int finalGasPrice = gasPrice*gallonsPumped;

cout<<endl;

if (gallonsPumped >= 1)
{
    cout<<endl<<"The total cost for gasoline today was $"<<finalGasPrice<<"."<<endl;
}
else
{
    cout<<"No money spent on gasoline today.";
}
4

2 に答える 2

4

int 型は整数です。つまり、小数点以下の桁数がないため、乗算は最も近い整数に切り捨てられます。

float または double を使用したい場合: double finalGasPrice = gasPrice*gallonsPumped;

小数点以下 2 桁を表示する出力形式を取得するには、おそらく次のようなものを使用する必要があります。 cout << setiosflags(ios::fixed) << setprecision(2) << finalGasPrice;

于 2012-05-01T23:46:27.640 に答える
1

整数は整数のみを保持できます。小数や分数は保持できません。したがって、finalgaspriceを設定すると、結果は整数に切り捨てられます。finalgaspriceをdoubleとして初期化すると、この問題が解決します。また、1ドル未満の支払いを気付かれないようにしたい場合を除いて、「>=1」を「>=0」に変更する必要があります。

于 2012-05-01T23:49:17.777 に答える