如何找到两个uint64值的模数

时间:2012-10-15 20:11:47

标签: objective-c modulus

非常简单的问题。我有两个uint64值。我想把两个数字分开并得到余数。

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

以上代码始终打印number1(36556800)的值。

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

 36556800 / 59325441 = 0.6162

如何将6162变为变量?整数除法丢弃分数,因此不是模数运算符我应该使用什么?

1 个答案:

答案 0 :(得分: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);

请注意,double不能完全代表大于2 53 的所有整数。