js怎么实现gpa计算
GPA 计算方法
GPA(Grade Point Average)通常根据学分和成绩点计算。不同学校可能有不同的成绩点对应规则,常见的是4分制或5分制。
基本公式
GPA的计算公式为: [ \text{GPA} = \frac{\sum (\text{课程学分} \times \text{成绩点})}{\sum \text{课程学分}} ]

实现代码
以下是一个基于4分制的GPA计算JavaScript实现:

function calculateGPA(courses) {
let totalCredits = 0;
let totalGradePoints = 0;
// 成绩点映射表(4分制)
const gradePoints = {
'A': 4.0,
'A-': 3.7,
'B+': 3.3,
'B': 3.0,
'B-': 2.7,
'C+': 2.3,
'C': 2.0,
'C-': 1.7,
'D+': 1.3,
'D': 1.0,
'F': 0.0
};
courses.forEach(course => {
const points = gradePoints[course.grade.toUpperCase()];
if (points !== undefined) {
totalGradePoints += course.credits * points;
totalCredits += course.credits;
}
});
return totalCredits === 0 ? 0 : totalGradePoints / totalCredits;
}
// 示例数据
const courses = [
{ name: '数学', credits: 4, grade: 'A' },
{ name: '英语', credits: 3, grade: 'B+' },
{ name: '物理', credits: 3, grade: 'C' }
];
const gpa = calculateGPA(courses);
console.log(`GPA: ${gpa.toFixed(2)}`);
自定义成绩点规则
如果成绩点规则不同(如5分制),只需修改gradePoints对象:
const gradePoints = {
'A': 5.0,
'B': 4.0,
'C': 3.0,
'D': 2.0,
'F': 0.0
};
加权GPA计算
某些情况下需要区分课程难度(如AP课程),可以为课程增加权重:
courses.forEach(course => {
const points = gradePoints[course.grade] * (course.weight || 1.0);
totalGradePoints += course.credits * points;
totalCredits += course.credits;
});
注意事项
- 确保成绩输入格式一致(如大小写敏感)。
- 处理无效成绩时跳过或抛出错误。
- 根据实际需求调整成绩点映射表和学分规则。
通过以上方法,可以灵活实现不同规则的GPA计算。






