【发布时间】:2014-11-30 05:06:24
【问题描述】:
对于类,我们得到了一个代码,该代码基本上采用数字 10000000000、3、-10000000000 和 5,将它们打印出来,将它们相加,然后将它们除以 4 以求平均值。它们都被标记为浮点数,当代码吐出平均值时,它会忽略等式中的 3 和 5。我发现用“double”替换“const float”可以修复它,但任务是找到一种方法来做到这一点而不改变标识符类型。有人有什么想法吗?
#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
int main(void)
{
const float YEAR_ONE = 10000000000;
const float YEAR_TWO = 3;
const float YEAR_THREE = -10000000000;
const float YEAR_FOUR = 5;
int numberOfYears = 4;
float average = YEAR_ONE + YEAR_TWO;
average += YEAR_THREE + YEAR_FOUR;
average = average/numberOfYears;
cout << fixed;
cout << setprecision(2);
cout << "1998 earnings were: $" << YEAR_ONE << endl;
//Prints the amount earned in 1998
cout << "1999 earings were: $" << YEAR_TWO << endl;
//Prints the amount earned in 1999
cout << "2000 earnings were: $" << YEAR_THREE << endl;
//Prints the amount earned in 2000
cout << "2001 earnings were: $" << YEAR_FOUR << endl;
//Prints the amount earned in 2001
cout << "Average earnings was: $" << average << endl;
//Prints the average amount earned between 1998 and 2001
return 0;
}
【问题讨论】:
-
好吧,浮点数一开始就没有很高的精度。数字越大,精度实际上就会下降。所以......真的没有惊喜。
-
听起来这个练习是为了教你一些东西。到目前为止你学到了什么?你能把它和你在课堂上讲过的东西联系起来吗?
-
如果您无法更改数据类型,请考虑将这些值相加的顺序。
-
这些数字对于
float来说太大了。存储它们会牺牲精度。 -
顺便说一句,“标识符”是您为变量选择的名称,它不是类型。因此,如果您的作业明确指出您不应更改 IDENTIFIERS,那么请务必将所有这些变量更改为双精度并保留现有名称;)
标签: c++ floating-point add average division