【发布时间】:2018-02-19 03:09:49
【问题描述】:
我正在做一个 C++ 练习。它需要我打印一个双,但我已经尝试了几次以下代码,它没有工作。如何在以下代码中将 GPA 打印为双精度?
#include <iostream>
#include <string>
using namespace std;
class gradeRecord{
private:
string studentID;
int units,gradepts;
public:
gradeRecord(string stuID, int unts, int gpts){
studentID = stuID;
units = unts;
gradepts = gpts;
}
double gpa(){
int gpa;
gpa = double(gradepts)/units;
return gpa;
}
void updateGradeInfo(int unts,int gpts){
units = unts;
gradepts = gpts;
}
void writeGradeInfo(){
cout << "Student:" << studentID << "\t"
<< "Unit:" << units << "\t"
<< "GradePts:" << gradepts << "\t"
<< "GPA:" << gpa();
}
};
int main(){
gradeRecord studObj("783-29-4716", 100, 345);
studObj.writeGradeInfo();
return 0;
}
结果是 "学生:783-92-4716 学分:100 GradePts:345 GPA:3"
但我期望的是 "学生:783-92-4716 学分:100 GradePts:345 GPA:3.45"
我怎样才能在 GPA 中得到一个整数,而不是一个整数?
【问题讨论】:
-
您将
gpa定义为int,将其定义为double -
考虑的替代方案 - 使用整数数学(因为它很容易): int gpa = (100 *gradepts) / units;然后 std::cout
-
@DOUGLASO.MOEN:如果
(gpa % 100)只是一个数字,结果就不会那么好了。 -
@DifengChen 你可以查看下面的解决方案,看看它是否能解决你的问题。
-
@BenVoigt - 故意的......只是为了说明修复(和修复(和修复))的容易程度。 std::cout