#include <iostream>
#include <iomanip>
using namespace std;
class Rectangle
{
float x, y;
public:
void value (float,float);
float area() {return (x*y);}
};
void Rectangle::value (float a,float b)
{
x = a;
y = b;
}
class Circle
{
float x;
public:
void value (float);
float area() {return (3.14*x*x);}
};
void Circle::value (float a)
{
x = a;
}
int main()
{
float q,a,b;
char reply;
cout << "\t\tArea Calculator";
do
{
cout << "\n\nPlease select from the following: ";
cout << "\n1. Rectangle";
cout << "\n2. Cirlce";
cout << "\n3. Exit";
cout << "\n\n";
cin >> q;
if (q==3)
break;
if (q==1)
{
system("cls");
Rectangle rect;
cout << "\nPlease enter length: ";
cin >> a;
cout << "\nPlease enter width: ";
cin >> b;
cout << "\nArea: " << rect.area();
cin.get();
cout << "\n\nDo you want to continue y/n: ";
cin >> reply;
if (toupper(reply) == 'N')
{
cout << "\n\n";
cout << "Goodbye!";
break;
}
}
if (q==2)
{
system("cls");
Circle circ;
cout << "\nPlease enter radius: ";
cin >> a;
cout << "\nArea: " << circ.area();
cin.get();
cout << "\n\nDo you want to continue y/n: ";
cin >> reply;
if (toupper(reply) == 'N')
{
cout << "\n\n";
cout << "Goodbye!";
break;
}
}
} while (toupper(reply!='Y'));
{
cout << "\n\n";
system("pause");
}
}
上面的代码,具有以下警告调试:C++ - 简单的形状面积计算器返回错误计算
“警告C4244:‘回归’:从双变换浮动,可能丢失数据”
...我敢肯定这是代码运行时错误计算的原因(例如,它返回5x5平方的区域为1.15292e + 016) - 请任何人解释正确的解决方法这,我似乎无法得到我相当dopey头左右:(
非常感谢谢谢! :D ...只是一个快速后续问题,如果你不介意......如果double有更高的精度(双精度),为什么不用float来代替float - 是因为它使用了更多的内存也许? - 当然,如果是这样的话,当考虑到现代计算机拥有的大量内存资源时,这个数量是微不足道的? –
当你有很多数字要保存 - 或者一个非常小的内存区域时,内存可能是一个考虑因素。不要只考虑带有X GB内存的PC - 考虑一个运行一些内存的微芯片固件代码,其中所需内存大小影响芯片尺寸 - 因此芯片的价格。另一个潜在的考虑是运行在旧的或低端的CPU上,这些CPU可能没有“更便宜”的支持以获得更高的精度,因此使用浮点比使用double更快。 –