2010-12-19 52 views
1

我很疑惑浮点数不返回小数点。代码:浮点问题:它不返回小数点

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

返回2.0而不是2.44。

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

回答

6

铸造maxBellowslensFocal浮动。由于它们都是整数,因此maxBellows/lensFocal会返回一个int值,然后在分配给max_stops时将其转换为浮动值。应该将至少一个maxBellowslensFocal转换为浮点数。

+0

谢谢,这解决了这个问题! – koenbro 2010-12-19 20:15:59

+0

@koenbro你可以接受这个答案:)'谢谢,这解决了它! ' – 2010-12-19 20:17:07

3

一个int除以int产生一个int。

使其中一个操作数成为浮点数,例如

max_stops = ((float)maxBellows/lensFocal); 
2

两个int的/运算符返回一个int。 您需要通过135.0分或铸造变量浮动或任何

2

你的问题不在于floatint - 这maxBellows/lensFocal是二int值的一个部门,这意味着它将有一个int因此,无论不管该结果是否被置入float变量。为了得到一个float结果,你必须计算前投一个操作数到float

max_stops = maxBellows/(float)lensFocal; 
2

尝试这些:

max_stops = ((float)maxBellows/lensFocal); 

or 

max_stops = (maxBellows/(float) lensFocal);