使用“double”输出带小数点后两位的值

时间:2012-05-01 23:40:07

标签: c++ 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.";
}

2 个答案:

答案 0 :(得分:4)

int类型是一个整数 - 即没有小数位,因此乘法向下舍入到最接近的整数。

您想使用float或double: double finalGasPrice = gasPrice*gallonsPumped;

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

答案 1 :(得分:1)

整数只能包含整数:无小数或分数。因此,当您设置finalgasprice时,结果将被截断为整数。 将finalgasprice初始化为double将解决此问题。 您还应该将“&gt; = 1”更改为“&gt; = 0”,除非您希望小于1美元的付款不会被忽视。