use*_*582 1 c floating-point casting
所以我有一个非常菜鸟的问题。虽然我将平均值声明为浮点数,但当我计算它时avg = sum / counter;
(其中 counter 是数组中大于 0 的元素的数量),然后打印它,我只得到小数点后的 0。
但是,如果我通过转换为浮点数来计算它,avg = (float) sum/counter;
则平均值会正确打印出来。
第一个不应该是正确的吗?如果我将变量声明为浮点型,为什么稍后要再次将其转换为浮点型?
当你声明
int sum;
int counter;
...
Run Code Online (Sandbox Code Playgroud)
然后sum / counter
执行整数除法,得到一个整数值。您仍然可以将该结果分配给float
变量,但该值将仅保留整数部分。
要解决这个问题,您需要将sum
或转换counter
为float
- 只有这样您才能获得float
结果:
float result = (float) sum / counter;
Run Code Online (Sandbox Code Playgroud)
顺便说一句,这与 - 意思相同((float) sum) / counter
,您所写的强制转换适用于sum
.