1

今はバカかもしれませんが、チェックしてみてください。私はフロートを持っています:

float wordTime=46.81; // I get it after some calculations

それから私はこれを記録しています:

NSLog(@"1:%f", wordTime);
NSLog(@"2:%f", (3/2)*wordTime);
NSLog(@"3:%f", (5/2)*wordTime);
NSLog(@"4:%f", (7/2)*wordTime);

私はこれを取得します:(ログ番号2に問題があります)

 46.81
 46.81 // weird
 93.8
140.7

次に、に変更し3/21.5、46、70、93、および140を取得しました。ここで何が欠けていますか?

4

2 に答える 2

6

3/2として解釈される(int)3/2ため、に評価され1ます。代わりに、型を明示的に書き出すことができます3.0f/2.0f。これにより、期待する結果が得られます(式全体を明示的にキャストするのと同じようにfloat)。

于 2013-01-06T14:15:47.967 に答える
4

一方のオペランドをキャストして、もう一方のオペランドがfloatにプロモートされ、整数除算の代わりにfloat除算ができるようにします。

NSLog(@"2:%f",(3.0/2)*wordTime  );
于 2013-01-06T14:16:53.170 に答える