반응형
정수에 대한 나누기와 모듈로를 어떻게 계산할 수 있습니까?
C #에서 정수에 대한 나누기와 모듈로를 어떻게 계산할 수 있습니까?
이런 종류의 질문을하기 전에 MSDN 설명서 를 확인하십시오 .
두 정수를 나눌 때 결과는 항상 정수입니다. 예를 들어 7/3의 결과는 2입니다. 7/3의 나머지를 확인하려면 나머지 연산자 ( % )를 사용합니다.
int a = 5;
int b = 3;
int div = a / b; //quotient is 1
int mod = a % b; //remainder is 2
도 있습니다 Math.DivRem
quotient = Math.DivRem(dividend, divisor, out remainder);
분할은 /
연산자를 사용하여 수행됩니다 .
result = a / b;
모듈로 나누기는 %
연산자를 사용하여 수행됩니다 .
result = a % b;
재미있는 사실!
'모듈러스'연산은 다음과 같이 정의됩니다.
a % n ==> a - (a/n) * n
참조 : 모듈 식 산술
그렇게 할 수 는 FAR 느린 % 연산자에 내장 된보다지라도, 당신은 자신의 롤 :
public static int Mod(int a, int n)
{
return a - (int)((double)a / n) * n;
}
편집 : 와우, 원래 여기에 오히려 잘못되었습니다. 저를 잡아 주셔서 감사합니다 @joren
이제 여기서는 C #의 division + cast-to-int가 Math.Floor
(즉, 분수를 삭제함) 과 동일하다는 사실에 의존하고 있지만 "진정한"구현은 대신 다음과 같습니다.
public static int Mod(int a, int n)
{
return a - (int)Math.Floor((double)a / n) * n;
}
실제로 다음을 통해 %와 "실제 계수"간의 차이를 확인할 수 있습니다.
var modTest =
from a in Enumerable.Range(-3, 6)
from b in Enumerable.Range(-3, 6)
where b != 0
let op = (a % b)
let mod = Mod(a,b)
let areSame = op == mod
select new
{
A = a,
B = b,
Operator = op,
Mod = mod,
Same = areSame
};
Console.WriteLine("A B A%B Mod(A,B) Equal?");
Console.WriteLine("-----------------------------------");
foreach (var result in modTest)
{
Console.WriteLine(
"{0,-3} | {1,-3} | {2,-5} | {3,-10} | {4,-6}",
result.A,
result.B,
result.Operator,
result.Mod,
result.Same);
}
결과 :
A B A%B Mod(A,B) Equal?
-----------------------------------
-3 | -3 | 0 | 0 | True
-3 | -2 | -1 | -1 | True
-3 | -1 | 0 | 0 | True
-3 | 1 | 0 | 0 | True
-3 | 2 | -1 | 1 | False
-2 | -3 | -2 | -2 | True
-2 | -2 | 0 | 0 | True
-2 | -1 | 0 | 0 | True
-2 | 1 | 0 | 0 | True
-2 | 2 | 0 | 0 | True
-1 | -3 | -1 | -1 | True
-1 | -2 | -1 | -1 | True
-1 | -1 | 0 | 0 | True
-1 | 1 | 0 | 0 | True
-1 | 2 | -1 | 1 | False
0 | -3 | 0 | 0 | True
0 | -2 | 0 | 0 | True
0 | -1 | 0 | 0 | True
0 | 1 | 0 | 0 | True
0 | 2 | 0 | 0 | True
1 | -3 | 1 | -2 | False
1 | -2 | 1 | -1 | False
1 | -1 | 0 | 0 | True
1 | 1 | 0 | 0 | True
1 | 2 | 1 | 1 | True
2 | -3 | 2 | -1 | False
2 | -2 | 0 | 0 | True
2 | -1 | 0 | 0 | True
2 | 1 | 0 | 0 | True
2 | 2 | 0 | 0 | True
사용자로부터 두 개의 정수를 읽습니다. 그런 다음 나머지와 몫을 계산 / 표시합니다.
// When the larger integer is divided by the smaller integer
Console.WriteLine("Enter integer 1 please :");
double a5 = double.Parse(Console.ReadLine());
Console.WriteLine("Enter integer 2 please :");
double b5 = double.Parse(Console.ReadLine());
double div = a5 / b5;
Console.WriteLine(div);
double mod = a5 % b5;
Console.WriteLine(mod);
Console.ReadLine();
참고 URL : https://stackoverflow.com/questions/5383050/how-can-i-calculate-divide-and-modulo-for-integers
반응형
'your programing' 카테고리의 다른 글
Android가 포 그라운드 서비스를 종료합니다. (0) | 2020.10.13 |
---|---|
Newtonsoft JSON 역 직렬화 (0) | 2020.10.13 |
파이썬에서 문자열 목록을 결합하고 각 문자열을 따옴표로 묶습니다. (0) | 2020.10.13 |
JPA 주석에 다중 열 제약 조건을 도입하는 방법은 무엇입니까? (0) | 2020.10.13 |
ajax 방식으로 레일 3에 양식 제출 (jQuery 사용) (0) | 2020.10.13 |