我很疑惑浮点数不返回小数点。代码:浮点问题:它不返回小数点
float max_stops;
int maxBellows = 330;
int lensFocal = 135;
max_stops = (maxBellows/lensFocal);
返回2.0而不是2.44。
你能帮我解决这个问题吗?
我很疑惑浮点数不返回小数点。代码:浮点问题:它不返回小数点
float max_stops;
int maxBellows = 330;
int lensFocal = 135;
max_stops = (maxBellows/lensFocal);
返回2.0而不是2.44。
你能帮我解决这个问题吗?
铸造maxBellows
和lensFocal
浮动。由于它们都是整数,因此maxBellows/lensFocal
会返回一个int值,然后在分配给max_stops
时将其转换为浮动值。应该将至少一个maxBellows
和lensFocal
转换为浮点数。
一个int除以int产生一个int。
使其中一个操作数成为浮点数,例如
max_stops = ((float)maxBellows/lensFocal);
两个int的/运算符返回一个int。 您需要通过135.0分或铸造变量浮动或任何
你的问题不在于float
但int
- 这maxBellows/lensFocal
是二int
值的一个部门,这意味着它将有一个int
因此,无论不管该结果是否被置入float
变量。为了得到一个float
结果,你必须计算前投一个操作数到float
:
max_stops = maxBellows/(float)lensFocal;
尝试这些:
max_stops = ((float)maxBellows/lensFocal);
or
max_stops = (maxBellows/(float) lensFocal);
谢谢,这解决了这个问题! – koenbro 2010-12-19 20:15:59
@koenbro你可以接受这个答案:)'谢谢,这解决了它! ' – 2010-12-19 20:17:07