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 类型是一个整数——即没有小数位,因此乘法向下舍入到最接近的整数。

您想使用浮点数或双精度数: double finalGasPrice = gasPrice*gallonsPumped;

要使输出格式在小数点后精确显示两位数,您可能需要使用以下内容: cout << setiosflags(ios::fixed) << setprecision(2) << finalGasPrice;

于 2012-05-01T23:46:27.640 回答
1

整数只能包含整数:没有小数或分数。因此,当您设置 finalgasprice 时,结果将被截断为整数。将 finalgasprice 初始化为 double 将解决此问题。您还应该将“>= 1”更改为“>= 0”,除非您希望不到一美元的付款不被注意。

于 2012-05-01T23:49:17.777 回答