我正在研究CS50 PS 2的可读性,并且在年级水平上得到了不正确的输出。
调试显示输入值正确,但是输出错误。使用输入进行手动计算得出正确答案。
我简化了方程式的第一部分,发现了这一点:
使用214
的L
值和56
的W
值,表达式:
float R = (0.0588 * (L / W) * 100);
输出
17.64
,这是错误的。当我使用时:
float R = (0.0588 * L / W * 100);
它输出
22.47
,这是正确的。我不知道为什么。
最佳答案
表达方式
float R = (0.0588 * (L / W) * 100);
将发展为
float R = 0,0588 * 3 * 100;
四舍五入到小数点后两位时是
17.64
。L / W
的结果integer division是int
,因此结果3.8...
将被截断为3
。要更正此问题,变量
W
或L
中至少有一个必须为float
或double
类型。表达方式
float R = (0.0588 * L / W * 100);
将发展为
float R = ((0,0588 * 214) / 24) * 100 //parenthesis to illustrate the sequence
当四舍五入到小数点后两位时,将输出正确的结果
22.47
。
关于c - 为什么这些括号在C语言中给出不同的答案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61640743/