你如何得到一个方程,以十进制输出答案



我正在为class做一项作业,我已经掌握了几乎所有的东西。它只需要获取一个框的宽度和高度,并输出面积以及需要多少油漆。我可以得到前三个部分,但只有当它是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加仑。

谢谢你的帮助。

wallArea转换为双重:

const double paintNeeded = (double)wallArea / 400;

在C++中,如果ab都是整数,则使用整数运算来计算a/b

在您的代码中计算:

const double paintNeeded = wallArea / 400;

将在将结果(0)放入CCD_ 5之前使用整数算术执行除法。

将代码更改为:

const double paintNeeded = wallArea / 400.;

(注意400后面的点)将使用浮点运算进行除法,得到您期望的结果。

这里的问题是对2个整数进行运算。这将导致最终值存储为小数点为零的int。

在这里,您有以下行:

int wallHeight, wallWidth, wallArea;

其中您已经将您的3个主要变量声明为类型int。然后在下面的行中,执行以下操作:

const double paintNeeded = wallArea / 400;

这里,即使您将wallArea / 400的商存储在类型为double的变量中,除法本身也在2个整数之间,因为wallAreaint变量,而400也被处理为int值,因为它之后没有十进制值。

有多种方法可以解决此问题:

选项1:更改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。

选项2:使用铸造

这是将400更改为400.0的替代方案;在这里,您将要处理的变量wallArea强制转换为double。参见此行:

const double paintNeeded = (double)wallArea / 400;

在这里,您可以强制编译器将wallArea中存储的值转换为double类型。在某些情况下(不是您的情况),这是有风险的,因为如果无法进行转换(例如,从类型int转换为字符串),则会导致错误。然而,在您的情况下,将int转换为double类型在这里是可行的,因此实际上,double值除以400不会出错。实际上,这与第一选择的结果相同;输出具有小数点的CCD_ 15。这种情况还导致paintNeeded的输出等于0.12而不是0。


这两种方法最适合您的情况,因为您不想输出特定数量的小数位数。但是,如果您对另一种方法感兴趣,可以使用#include <iomanip>头文件中的setprecision(int precision_value)。有关此方面的更多信息,请访问std::setprecision。

最新更新