2

「domande」と「corrette」という 2 つの NSInteger 変数があります。この操作を実行する必要があります: corrette*10/domande。結果を float 変数にしたいので、「voto」変数を次のように宣言しました。「float voto = corrette*10/domande;」. NSLog で「voto」の値を出力すると、結果の近似値とそれに続く「.000000」が得られます。

コードは次のとおりです。

NSInteger domande = [numDomande integerValue];
NSInteger corrette = [numRisposteCorrette integerValue];
float voto = corrette*10/domande;
NSLog(@"float value is: %f", voto);

「domande」に値 7 を割り当て、「corrette」に値 4 を割り当てると、voto=5.000000 代わりに、voto=5.71 になるはずです...

float に変換された整数型ではなく、直接 float 型を返す除算を行うにはどうすればよいですか?

4

5 に答える 5

9

最も簡単な方法は次のとおりです。

float voto = 10.0f * corrette / domande;

最初の引数を afloatにすることで、他の引数も昇格され、中間結果と最終結果が切り捨てられないことが保証されます。

a にキャストすることで同様の結果を得ることができますがcorrettefloat可能な限り単純にする傾向があります。

于 2012-09-22T14:14:55.767 に答える
5

整数を浮動小数点数に変換するのではなく、最初に浮動小数点数を取得できます。

CGFloat domandeFloat = [numDomande floatValue];
CGFloat corretteFloat = [numRisposteCorrette floatValue];
CGFloat voto = (corretteFloat / domandeFloat) * 10.0f
NSLog(@"float value is: %f", voto);
于 2012-09-22T14:15:32.173 に答える
4

NSInteger には floatValue というメソッドがありません。NSInteger は単なる int です。代わりに、解決策は次のようになります。

CGFloat domandeFloat = [[NSNumber numberWithInt: numDomande] floatValue];
CGFloat domandeFloat = [[NSNumber numberWithInt: numRisposteCorrette] floatValue];
CGFloat voto = (corretteFloat / domandeFloat) * 10.0f;
于 2013-05-08T13:25:57.620 に答える
2

最初に NSIntegers を float 型に変換してみてください:

float voto = (float)corrette*10/(float)domande;
于 2012-09-22T14:05:42.500 に答える
0

「10.0」と書くことで、「10」をintからfloatにキャストできます

  float voto = corrette*10.0/domande;

また

float voto = ((float)corrette*10) / (float)domande;

操作 "/" は it オペランドの型を返します - 5 と 4 は int であるため、5/4 は int の結果 1 を返し、5.0 と 4.0 は float 値として解釈されるため、5.0/4.0 は 1.25 を返します。したがって、入力変数の型を手動でキャストして float にする必要がcorretteありdomandeます

于 2012-09-22T14:05:59.163 に答える