0

「blastRadius」と呼ばれる浮動小数点プロパティを持つ、bombObject というオブジェクトがあります。

When 'NSLog(@"%.2f",bombObject.blastRadius);' 実行 最初のペースで作ったものは何でも取得します。たとえば 100 などです。blastRadius の 3/7 が得られず、0.00 が得られます。ただし、「NSLog(@"%.2f",(bombObject.blastRadius*3)/7);」を実行すると、希望の答えが得られます。

どうしてこれなの?

ありがとうございます!

4

2 に答える 2

3

int/int は float に昇格しないため、整数のみが返されます。3/7 は 1 より小さいので、最終的に 0 に切り捨てられます。次に、bombObject.blastRadius に 0 を掛けると、表示されている 0.00 の答えが得られます。

(bombObject.blastRadius*3)/7 が機能するのはなぜですか? bombObject.blastRadius*3 は float の結果であるためです。float / int は float になるため、このインスタンスで機能します。

于 2012-10-09T22:54:54.373 に答える
1

(3/7) は結果がゼロになる整数式として評価されるため、blastRadius*(3/7) は結果がゼロになります。

blastRadius*3 は float (float * int = float) として評価されるため、結果は float 値として評価されます。

于 2012-10-09T22:56:45.567 に答える