【发布时间】:2020-07-17 14:00:59
【问题描述】:
我需要对三个变量应用一个公式。一些操作(除法)给我一个 0 而不是正确的数字。所以我得到的结果与我对公式的预期不同。
我认为问题与 C 管理数据类型及其余数的方式有关。出于这个原因,我尝试将 int 变量转换为 float 变量或将我划分的数字四舍五入。但是所有这些仍然不起作用,我无法理解我错过了什么。
能否请您看一下我的代码并告诉我错误在哪里? 谢谢
double grade(int lc, int wc, int sc)
{
wc = (float)wc;
lc = (float)lc;
sc = (float)sc;
float L = round((wc/100)/lc);
float S = round((wc/100)/sc);
float index = 0.0588 * L - 0.296 * S - 15.8;
return index;
}
【问题讨论】:
-
我怀疑如果你像他们 here 那样做,它应该可以工作。但目前您将其存储回
wc,这会导致另一个转换回int。尝试float wc_new = (float)wc;并在计算中使用wc_new。如果它有效,我会把它写成答案
标签: c function types division cs50