【发布时间】:2014-10-14 03:21:48
【问题描述】:
我正在为我的班级编写一个简单的程序来计算和显示某些数字,并且我的代码都可以正常运行,但是在显示屏上我的一些数字在我不希望它们出现的地方被四舍五入。我将精度设置为两位小数,因为一些输入数字是小数,但例如,如果答案是 3000,则显示数字 2999。
这是我的代码,如果有帮助的话
int main()
{
double expense = 0.0;
double expenseTotal = 0.0;
double income = 0.0;
double incomeTotal = 0.0;
double netProfit = 0.0;
double netIncome = 0.0;
double netExpense = 0.0;
int incNo = -1;
int expNo = -1;
cout << "ENTER A NEGATIVE NUMBER TO STOP INCOME AMOUNT DATA ENTRY." << endl << endl;
do
{
cout << "Enter Income Amount: ";
cin >> income;
netIncome = income;
incomeTotal += netIncome;
incNo += 1;
} while (income > 0);
cout << endl << "ENTER A NEGATIVE NUMBER TO STOP EXPENSE AMOUNT DATA ENTRY." << endl << endl;
do
{
cout << "Enter Expense Amount: ";
cin >> expense;
netExpense = expense;
expenseTotal += netExpense;
expNo += 1;
} while (expense > 0);
cout << endl << "Total of the " << incNo << " income amounts entered ----> $" << fixed << setprecision(2) << incomeTotal << endl;
cout <<"Total of the " << expNo << " expense amounts entered ----> $" << fixed << setprecision(2) << expenseTotal << endl;
netProfit = incomeTotal - expenseTotal;
if (netProfit > 0)
{
cout << "Net Profit earned ----> $" << fixed << setprecision(2) << netProfit;
cout << endl;
}
else
{
cout << "Net Loss incurred ----> $" << fixed << setprecision(2) << netProfit;
cout << endl;
cout << "Note . . . Loss figire most be reported to company CEO." << endl << endl;
}
return 0;
}
【问题讨论】:
-
您使用的浮点数会导致精度损失(完整讨论请参阅this link)。您的结果被截断,因此结果很奇怪。将您的输入乘以 100 并截断,然后在最后转换回来之前以整数进行所有算术运算。
-
不正确,代码错误。看我的回答