我记得在java中,模运算符可以被反转,这样你可以反转它而不是看到余数是什么操作,所以它会告诉你很多次数除以:
Console.WriteLine(1000 % 90);
Console.WriteLine(100 % 90);
Console.WriteLine(81 % 80);
Console.WriteLine(1 % 1);
输出:
示例由DotNetPerls提供
我想看看'80'进入'81'多少次,而不是看剩下的。哪个应为1,余数为1。
c#modulo运算符是否支持此行为?如果没有,怎么可能达到预期的行为?用最少的代码请......:D
编辑:
我想答案是简单的,比如将两个数字分开并去除' - 。#'值并保持整数'1.-'。我知道这一点,但必须有一个更明智的方式吗?
答案 0 :(得分:13)
您要找的是整数除法。它完全与模运算符无关。
要执行整数除法,只需确保两个操作数都不是float / double。
示例:
int one = 81 / 80;
这会为您提供1
,而double notOne = 81.0 / 80
会为您提供1.0125
。
答案 1 :(得分:8)
您已经得到了答案,如果将其分配给整数,则无需处理小数。
在你的评论中,你说你正在使用小数,那么Math.Floor是可能的。即:
double d = Math.Floor(81.0 / 80.0); // 1.0000....
答案 2 :(得分:1)
Console.WriteLine(1000 % 90); // modulo = 10
Console.WriteLine(1000 / 90); // integer division = 11
Console.WriteLine(1000 / 90.0); // floating point division = 11.1111111111111
所以即使其他人都在谈论你的问题,我也会得到你的问题。为了平衡整数除法,您需要使用模运算符来处理余数:((1000 / 90) * 90) + (1000 % 90) == 1000
。
答案 3 :(得分:1)
在OpenOffice CALC中,有QUOTIENT,它返回除法的整数部分᎓
MOD(17;4) returns 1, while
QUOTIENT(17;4) returns 4.
MOD(33;9) returns 6, while
QUOTIENT(33;9) returns 3.
我一直认为QUOTIENT是MOD的对应对象-也许这就是OP所指的MOD的“对面”。
答案 4 :(得分:0)
幸运的是,你从一个模数的倒数中提出了一个不同的问题。模数的倒数理论上可以给你一个未知的分子或除数。
例如,假设你有n % d = r
。你知道r和d,n是未知的。模数函数表示为n % d = n - d*INT(n/d)
。所以r = n - d*INT(n/d)
。我无法想到如何直接解决这个问题,因为当你不知道n时,你需要知道INT(n / d)。