0

本当に簡単な質問です。2つのuint64値があります。2つの数値を割って、余りを取りたいです。

 uint64 number1 = 36556800;
 uint64 number2 = 59325441;
 uint64 result = number1 % number2;
 NSLog(@"Result: %lld", result);

上記のコードは常にnumber1(36556800)の値を出力します。

編集:私はnumber1がnumber2よりも小さいことに気づきました。これらの2つの数値を除算すると、結果は分数になります。その分数をキャプチャしたいと思います。つまり、基本的に私の例では:

 36556800 / 59325441 = 0.6162

6162を変数にするにはどうすればよいですか?整数除算は分数を破棄するので、モジュラス演算子は私が使用すべきものではありませんか?

4

1 に答える 1

3

59325441 は 36556800 に何回入りますか?

59325441 は 36556800 より大きいため、0 回です。

36556800 から 0 * 59325441 を引くと、いくら残るか?

36556800 - 0 * 59325441 == 36556800

したがって

36556800 % 59325441 == 36556800

あなたのコードは正しい答えを出力しています。別の回答を期待していた場合は、質問を編集して、期待した回答を含め、その回答を期待した理由を説明してください。

アップデート

double修正された質問に基づいて、除算する前に数値を次のように変換したいようです。

double fraction = (double)number1 / (double)number2;
NSLog(@"fraction = %.4f", fraction);

a は 2 53doubleより大きいすべての整数を正確に表現できるわけではないことに注意してください。

于 2012-10-15T20:19:02.057 に答える