我错过了什么?
float stepSize = 0.0f;
int activeCircleRadius = 10;
int numSteps = 24;
AiLog.v("init activeCircleRadius " + activeCircleRadius + " numSteps "
+ numSteps);
stepSize = activeCircleRadius / numSteps;
AiLog.v("stepSize is " + stepSize);
操作后,日志中的stepSize始终为零。是否将浮点数除以int?
答案 0 :(得分:10)
这里两个变量都是整数,因此您执行整数除法:
activeCircleRadius / numSteps
整数除法的结果是整数。结果被截断。
要解决此问题,请将一个(或两个)变量的类型更改为float
:
float stepSize = 0.0f;
float activeCircleRadius = 10;
或者在分割表达式中添加一个转换为float:
stepSize = (float)activeCircleRadius / numSteps;
答案 1 :(得分:3)
不要进行整数除法
stepSize = activeCircleRadius / (float)numSteps;
总结:是的,因为你将activeCircleRadius除以整数。
答案 2 :(得分:1)
With all arithmetic operators in Java, the result has the type of the largest operator. For instance:
- float operator long => float
- int operator int => int
- int operator long => long
float stepSize = 0f;
float activeCircleRadius = (float) 10.0;
int numSteps = 24;
stepSize = activeCircleRadius / numSteps;
答案 3 :(得分:1)
整数除法将结果为0。 它的10/24而不是10.0 / 24.0。 你需要将一个变量设为double或float来得到非零答案。
答案 4 :(得分:0)
你正在进行整数除法,因此在你的答案中不会得到任何小数位。尝试更改:
stepSize = activeCircleRadius / numSteps;
到
stepSize = activeCircleRadius / (float)numSteps;