2010-12-19 13 views
1

浮動小数点が小数を返さないことに私は困惑します。コード:浮動小数点の問題:それは小数を返しません

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

は2.44ではなく2.0を返します。

私はこの権利を得ることができますか?

答えて

6

キャストmaxBellowsおよびlensFocalをフロートします。両方がintなので、maxBellows/lensFocalはintを返します。これはmax_stopsに割り当てられたときにfloatにキャストされます。 maxBellowslensFocalの少なくとも1つはフロートにキャストする必要があります。

+0

おかげで、これはそれを解決! – koenbro

+0

@koenbroこれを答えとして受け入れることができます:) 'ありがとう、これで解決しました! ' –

3

intをintで割った値がintになります。

オペランドの1つを浮動小数点にします。

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

2つのintの/演算子はintを返します。 あなたが浮いて135.0で除算または変数をキャストする必要があるか

2

あなたの問題はfloatではなくintでないものは何でも - このmaxBellows/lensFocalはそれがint結果を持っていることを意味する2つのint値の一部門であり、どんなにその結果を変数floatに入れるかどうかを指定します。 float結果を取得するには、計算の前にfloatにオペランドの一方をキャストする必要があります。

max_stops = maxBellows/(float)lensFocal; 
2

はこれらを試してみてください。

max_stops = ((float)maxBellows/lensFocal); 

or 

max_stops = (maxBellows/(float) lensFocal); 
関連する問題