我很困惑浮动不会返回分数。代码:
float max_stops;
int maxBellows = 330;
int lensFocal = 135;
max_stops = (maxBellows / lensFocal );
返回2.0而不是2.44。
你能帮我解决这个问题吗?
答案 0 :(得分:6)
将maxBellows
和lensFocal
投靠浮动。由于它们都是整数,maxBellows / lensFocal
返回一个int,然后当它被赋值给max_stops
时会被转换为浮点数。至少应将maxBellows
和lensFocal
中的一个强制转换为浮点数。
答案 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 );