我有一个代码,其中变量" sum"是一个整数。我试图找到平均值,这样
int sum = 1;
float avg = 0;
//later on in the code
avg = (float)sum/37;
根据Android Studio调试器,avg中存储的值为0.0,而不是所需的0.02 ...我想要更多的小数点,但我的答案是四舍五入到小数点。我用数据类型" double"尝试了上面的代码。我得到了同样的答案。有人有任何提示吗?
答案 0 :(得分:1)
尝试:
avg = sum/37f;
您的问题是整数/整数=整数 在你的情况下,在完成整数计算时会发生转换,这是迟到的。
答案 1 :(得分:1)
您的问题是您的代码的运算符优先级已解析为:
avg = (float)(sum/37);
这意味着,在投射到int / int
之前,您仍在进行0
数学运算,结果为float
。
有两种方法可以解决它:
avg = ((float)sum)/37; // cast sum to float before division
avg = sum/37f; // change to a float literal so sum is coerced to float for you