我正在开发一个程序,根据用户输入的值输出花在汽油上的总金额。我希望它输出一个带有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.";
}
答案 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美元的付款不会被忽视。