我正在做一个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级:345 GPA:3”
但我所期待的是“学生:783-92-4716单元:100级:345 GPA:3.45”
与其在GPA中得到一个整数,我如何才能得到一个双倍呢?
发布于 2018-02-19 04:00:00
你可以很容易地包括一个机械手。此机械手在报头<iomanip>中声明。并直接在std::cout上设置精度,并使用std::fixed格式说明符。
#include <iomanip> // std::setprecision
double gpa(){
int gpa = 100*gradepts/units;
std::cout << std::setprecision(3) << gpa/100.0 << '\n'; // you can set your precission to a value you plan to use
std::cout << std::fixed;
return gpa/100.0;
}这将使您的更正工作如下:
#include <iostream>
#include <iomanip> // std::setprecision
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 = 100*gradepts/units;
std::cout << std::setprecision(3) << gpa/100.0 << '\n'; // you can set your precission to a value you plan to use
std::cout << std::fixed;
return gpa/100.0;
}
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;
}我希望这能解决你的问题。
发布于 2018-02-19 03:13:10
与其在GPA中得到一个整数,我如何才能得到一个双倍呢?
当你使用
int gpa;
gpa = double(gradepts)/units;您正在截断double。
如果要保留至少两个小数点,可以使用:
double gpa(){
int gpa = 100*gradepts/units;
return gpa/100.0;
}https://stackoverflow.com/questions/48859063
复制相似问题