我正在上课,我几乎掌握了一切。它应该只取一个盒子的宽度和高度来输出面积以及需要多少涂料。我可以得到前三个部分,但它只会告诉我如果它是400的倍数需要多少油漆(用于确定需要多少油漆的数量)。
我目前有这个:
#include <iostream>
using namespace std;
int main()
{
int wallHeight, wallWidth, wallArea;
cout << "Please enter the height of the wall (feet): ";
cin >> wallHeight;
cout << endl << "Please enter the width of the wall (feet): ";
cin >> wallWidth;
wallArea = wallHeight * wallWidth;
const double paintNeeded = wallArea / 400;
cout << endl << "The area of the wall is: " << wallArea << " square feet. "
<< "This will require about " << paintNeeded << " gallons of paint." << endl;
return 0;
}
假设我说墙是24x2。它会说该区域是48,但它需要0加仑油漆,我只想说它需要0.12加仑。
感谢您的帮助。
答案 0 :(得分:1)
将wallArea
转换为double:
const double paintNeeded = (double)wallArea / 400;
答案 1 :(得分:1)
在C ++中,如果a
和b
都是整数,则使用整数运算来计算a/b
。
在你的代码中计算:
const double paintNeeded = wallArea / 400;
在将结果(0)放入double
之前,将使用整数运算执行除法。
将代码更改为:
const double paintNeeded = wallArea / 400.;
(注意400之后的点)将使用浮点运算执行除法,得到您期望的结果。
答案 2 :(得分:1)
你在这里遇到的问题是你正在对2个整数进行操作。这导致最终值存储为零小数点的int。
在这里,您有以下一行:
int wallHeight, wallWidth, wallArea;
您已将3个主要变量声明为int
类型。然后在以下行中执行以下操作:
const double paintNeeded = wallArea / 400;
此处,即使您将wallArea / 400
的商存储在double
类型的变量中,分部本身也在2个整数之间,因为wallArea
是int
变量,400也被处理为int
值,因为它后面没有小数值。
有多种方法可以解决此问题:
这可能是最简单的方法,但它无法控制您想要输出的小数位数。这可以通过更改以下行来完成:
const double paintNeeded = wallArea / 400;
为:
const double paintNeeded = wallArea / 400.0;
这里唯一的区别是400现在被处理为数据类型float
的值。这样,当您运行以下行时:
cout << endl << "The area of the wall is: " << wallArea << " square feet. "
<< "This will require about " << paintNeeded << " gallons of paint." << endl;
paintNeeded将输出0.12
而不是0。
这是将400更改为400.0的替代方法;在这里,您将变量wallArea
强制转换为double。见这一行:
const double paintNeeded = (double)wallArea / 400;
在这里,您强制编译器将存储在wallArea中的值转换为double类型。这在某些情况下(不是你的)是有风险的,因为如果无法进行转换(例如从int类型到字符串),那么它将导致错误。但是,在您的情况下,将int转换为double类型是可行的,因此实际上,double值除以400而没有错误。实际上,这与第一种选择具有相同的结果;输出带有小数点的paintNeeded
。这种情况还会导致paintNeeded
的输出等于0.12
而不是0。
这两种方法对你的情况来说是最好的,因为你不想输出特定数量的小数位,。但是,如果您对其他方式感兴趣,可以使用setprecision(int precision_value)
头文件中的#include <iomanip>
。有关详细信息,请访问std::setprecision。