C中变量的条件转换

标签 c casting

我有以下表达式,其中所有变量都是 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/

相关文章:

c - 如何从 C 中的十六进制转换为字符串?

c - C 编程中的 LINT_ARGS 是什么?

c - While 循环检索输入,在 C 中无法正常工作

c - 需要关于将字符串发送到函数的建议

delphi - 将 SmallInt 常量定义为十六进制

c++ - 将 size_t 转换为 int 以声明 char 数组的大小

c - 非线程安全库和线程

c - 为什么 strcmp 在 c 中不起作用?

在 C 编程中转换空指针

c - 解释C中的一行代码——指针和强制转换