我有以下表达式,其中所有变量都是 int(并且练习要求它们必须是 int)
final_grade = (0.85*exam_grade) + (0.15*homework_grade);
在上面的表达式中,82.499 等值应转换为 82,82.5 应转换为 83。
我尝试了下面的方法,但我认为这不是正确的方法。感谢您的帮助。
final_grade = (0.85*exam_grade) + (0.15*homework_grade);
final_grade = (float)final_grade;
最佳答案
要用整数运算计算结果,设考试成绩的百分比为 PE
(例如,85),作业成绩的百分比为 PH
。那么四舍五入的分数是:
(PE*exam_grade + PH*homework_grade + 50) / 100
使用浮点运算计算结果存在这样的风险,即由于浮点运算中的错误,四舍五入前的小数将略低于 .5,即使使用实数运算计算的数学结果正好是 .5 ,因此四舍五入后的结果是错误的。
关于C中变量的条件转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58100395/