#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更快。 –