浮点问题:它不返回分数

时间:2010-12-19 20:11:15

标签: java android

我很困惑浮动不会返回分数。代码:

float max_stops;
int maxBellows = 330;
int lensFocal = 135;
max_stops =  (maxBellows / lensFocal );

返回2.0而不是2.44。

你能帮我解决这个问题吗?

5 个答案:

答案 0 :(得分:6)

maxBellowslensFocal投靠浮动。由于它们都是整数,maxBellows / lensFocal返回一个int,然后当它被赋值给max_stops时会被转换为浮点数。至少应将maxBellowslensFocal中的一个强制转换为浮点数。

答案 1 :(得分:3)

int除以int得到一个int。

使其中一个操作数浮动,例如

max_stops =  ((float)maxBellows / lensFocal );

答案 2 :(得分:2)

两个整数的/运算符返回一个int。 您需要除以135.0或将变量转换为float或其他

答案 3 :(得分:2)

问题不在于float,而在于int - 此maxBellows / lensFocal是两个int值的分区,这意味着它会有一个int结果,无论该结果是否被放入{​​{1}}变量。要获得float结果,您必须在计算之前将其中一个操作数强制转换为float

float

答案 4 :(得分:2)

试试这些:

max_stops =  ((float)maxBellows / lensFocal );

or

max_stops =  (maxBellows / (float) lensFocal );