c#과 델파이의 정수 나누기 결과 차이
델파이의 경우 단순하다. 무엇을 무엇으로 나누던 그 결과를 그대로 반환한다. 예를 들어 1/2를 정수 변수에 반환하려 하면 오류로 처리된다. 그러나 c#에서는 복잡하다. 정수를 정수로 나누면 정수 즉 몫만 반환한다.
For the operands of integer types, the result of the / operator is of an integer type and equals the quotient of the two operands rounded towards zero:
– Arithmetic operators (C# reference), Division operator /
실수 변수에 넣으려 해도 막무가내다. 컴파일러는 정상으로 처리를 하므로 이런 사정을 모르면 문제가 생겼는지도 모르게 된다. 이런 문제를 피하려면 아래와 같이 정수 가운데 하나를 실수로 바꾸면 된다.
double double1 = 3 / 2; // 1
double double1 = (double)3 / 2; // 1.5
double double1 = 3 / 2.0; // 1.5