-2

簡単に解決できると思う問題がありますが、答えが見つかりません。

long test = 8064269 / 8300000;
NSLog(@"%lu",test);

ログは私に与えています:

0 (should be something near to 1)

後でこれをもう少し計算する必要があります。

long test = 8064269 / 8300000 * 277;
NSLog(@"%lu",test);

ログは私に与えています:

4294967048 (should be something near to 277)

私は何を間違っていますか?

4

1 に答える 1

2
8064269 / 8300000

すべてのオペランドが整数型であるため、整数除算です。つまり、小数部分を切り捨て、0 の整数部分だけを残します。

しかし、そうでなかったとしても、小数を整数 ( long) に格納するにはどうすればよいでしょうか? 整数に代入すると、結果も切り捨てられます。そもそも必要なのは、

float test = 8064269.0 / 8300000.0;
NSLog(@"%f", test);
于 2012-09-25T16:38:06.300 に答える