如何在C 中打印双重

How to print a double in C++

本文关键字:打印      更新时间:2023-10-16

我正在进行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 Gradept:345 GPA:3"

但是我期望的是"学生:783-92-4716单位:100 Gradept:345 GPA:3.45"

而不是在GPA中获得整数,我该如何获得双重?

而不是在GPA中获得整数,我该如何获得双重?

当您使用

    int gpa;
    gpa = double(gradepts)/units;

您正在截断double

如果要保持至少两个小数点,则可以使用:

double gpa(){
    int gpa = 100*gradepts/units;
    return gpa/100.0;
}

您可以通过包括操纵器来轻松地做。该操纵器在标题<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;
}

我希望这能解决您的问题。