2010-12-19 54 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);