浮動小数点が小数を返さないことに私は困惑します。コード:浮動小数点の問題:それは小数を返しません
float max_stops;
int maxBellows = 330;
int lensFocal = 135;
max_stops = (maxBellows/lensFocal);
は2.44ではなく2.0を返します。
私はこの権利を得ることができますか?
浮動小数点が小数を返さないことに私は困惑します。コード:浮動小数点の問題:それは小数を返しません
float max_stops;
int maxBellows = 330;
int lensFocal = 135;
max_stops = (maxBellows/lensFocal);
は2.44ではなく2.0を返します。
私はこの権利を得ることができますか?
キャストmaxBellows
およびlensFocal
をフロートします。両方がintなので、maxBellows/lensFocal
はintを返します。これはmax_stops
に割り当てられたときにfloatにキャストされます。 maxBellows
とlensFocal
の少なくとも1つはフロートにキャストする必要があります。
intをintで割った値がintになります。
オペランドの1つを浮動小数点にします。
max_stops = ((float)maxBellows/lensFocal);
2つのintの/演算子はintを返します。 あなたが浮いて135.0で除算または変数をキャストする必要があるか
あなたの問題はfloat
ではなくint
でないものは何でも - このmaxBellows/lensFocal
はそれがint
結果を持っていることを意味する2つのint
値の一部門であり、どんなにその結果を変数float
に入れるかどうかを指定します。 float
結果を取得するには、計算の前にfloat
にオペランドの一方をキャストする必要があります。
max_stops = maxBellows/(float)lensFocal;
はこれらを試してみてください。
max_stops = ((float)maxBellows/lensFocal);
or
max_stops = (maxBellows/(float) lensFocal);
おかげで、これはそれを解決! – koenbro
@koenbroこれを答えとして受け入れることができます:) 'ありがとう、これで解決しました! ' –