2012-05-01 5 views
0

私は、ユーザーが入力した値に基づいてガソリンに費やされた合計金額を出力するプログラムに取り組んでいます。私は2小数点で値を出力したいが、プログラムは合計が何であるべきかを出力するのではなく、合計が何であっても丸めます。私は初心者で、なぜ正しく動作していないのか分かりません。"double"を使用して小数点以下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."; 
} 
+1

試してみてください。 'finaliosPrice = gasPrice * gallonsPumped;' –

答えて

4

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

あなたがfloatまたはdoubleを使用したい:小数点以下2桁を表示するには、出力形式を取得するには double finalGasPrice = gasPrice*gallonsPumped;

を、あなたはおそらくのようなものを使用したい: cout << setiosflags(ios::fixed) << setprecision(2) << finalGasPrice;

+0

'setiosflags(ios :: fixed)ではなく' std :: cout << std :: fixed << ... 。 –

1

整数小数または小数はありません。したがって、finalgaspriceを設定すると、結果は整数に切り捨てられます。 finalガスプラスを2倍に初期化することでこの問題が解決されます。 1ドル未満の支払いが気付かれないようにしたい場合を除き、 '> = 1'を '> = 0'に変更する必要があります。

関連する問題