首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在C++中打印双倍

如何在C++中打印双倍
EN

Stack Overflow用户
提问于 2018-02-19 03:09:49
回答 2查看 6.4K关注 0票数 1

我正在做一个C++练习。它要求我打印一个双倍,但我已经尝试了以下代码几次,它没有工作。如何在以下代码中以双倍形式打印GPA?

代码语言:javascript
复制
#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中得到一个整数,我如何才能得到一个双倍呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-02-19 04:00:00

你可以很容易地包括一个机械手。此机械手在报头<iomanip>中声明。并直接在std::cout上设置精度,并使用std::fixed格式说明符。

代码语言:javascript
复制
#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;
}

这将使您的更正工作如下:

代码语言:javascript
复制
#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;
}

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

票数 2
EN

Stack Overflow用户

发布于 2018-02-19 03:13:10

与其在GPA中得到一个整数,我如何才能得到一个双倍呢?

当你使用

代码语言:javascript
复制
    int gpa;
    gpa = double(gradepts)/units;

您正在截断double

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

代码语言:javascript
复制
double gpa(){
    int gpa = 100*gradepts/units;
    return gpa/100.0;
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48859063

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档