0

真的很简单的问题。我有两个 uint64 值。我想将这两个数字相除并得到余数。

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

上面的代码总是打印 number1 (36556800) 的值。

编辑:我意识到 number1 小于 number2。当你将这两个数字相除时,结果是一个分数。我想抓住那一小部分。所以基本上在我的例子中:

 36556800 / 59325441 = 0.6162

如何将 6162 放入变量中?整数除法会丢弃分数,所以我应该使用的不是模运算符吗?

4

1 回答 1

3

59325441 进入 36556800 多少次?

零次,因为 59325441 大于 36556800。

从 36556800 中减去 0 * 59325441 还剩多少?

36556800 - 0 * 59325441 == 36556800

所以

36556800 % 59325441 == 36556800

您的代码正在打印正确的答案。如果您期望得到不同的答案,请编辑您的问题以包含您期望的答案,并解释您期望它的原因。

更新

根据您修改后的问题,听起来您想double在除法之前将数字转换为:

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

请注意,adouble不能精确地表示所有大于 2 53的整数。

于 2012-10-15T20:19:02.057 回答