2010-12-03 3 views
12

/\의 차이점은 무엇입니까?Division of VB.NET

내 코드는 내가 사용하는 용도에 따라 매우 다른 답변을 제공합니다. 전에 두 가지를 모두 보았지만 차이점을 전혀 알지 못했습니다.

답변

16

숫자를 분할하는 방법은 두 가지가 있습니다. 빠른 길과 느린 길. 많은 컴파일러가 여러분을 빠른 길로 속이려고합니다. C#을,이 시도 그 중 하나입니다

using System; 

class Program { 
    static void Main(string[] args) { 
     Console.WriteLine(1/2); 
     Console.ReadLine(); 
    } 
} 

출력 : 0

는 그 결과에 만족? 표현식의 왼쪽과 오른쪽이 정수일 때 기술적으로 정확하고 문서화 된 동작입니다. 그건 정수 구분 빠른 않습니다. (악명 높은) FDIV 명령 대신 프로세서에서 IDIV 명령. 또한 모든 중괄호 언어가 작동하는 방식과 완전히 일치합니다. 그러나 분명히 SO에서 "일어난"질문의 주요 출처입니다. 행복한 결과를 얻으려면이 같은 뭔가를해야 할 것 :

Console.WriteLine(1.0/2); 

출력 : 0.5

왼쪽은 부동 소수점 부문을 강요, 이제 두 번이다. 계산기가 보여주는 결과와 함께. FDIV를 호출하는 다른 방법은 오른쪽에 부동 소수점 숫자를 지정하거나 피연산자 중 하나를 명시 적으로 (double)으로 캐스팅하는 것입니다.

VB.NET이 그런 식으로 작동하지 않습니다./연산자는 항상 형식과 관계없이 부동 소수점 나누기입니다. 때로는 실제로 을 수행하면은 정수 나누기를 원합니다. 그게 \입니다. 위의 대한

+0

재미있는 포인트. 나는 항상 VB에서 /와 \의 차이점을 이해했지만, C 언어로 데이터 유형을 지정하는 작업을 수행하고 있다는 어떤 이유로 든 내 마음을 결코 넘어서지 못했습니다. 내가 지금 돌아가서 내 번호의 끝에서 모든 D와 F를 제거 할 수있을 것 같네요. =) – AndyPerfect

5
/ Division 
\ Integer Division 
+0

일부 정교 순서에있을 수 있습니다. –

9
10/3 = 3.333 
10 \ 3 = 3 (the remainder is ignored) 
0
10/3 = 3.33333333333333, assigned to integer = 3 
10 \ 3 = 3, assigned to integer = 3 
20/3 = 6.66666666666667, assigned to integer = 7 
20 \ 3 = 6, assigned to integer = 6 

코드 :

Dim a, b, c, d As Integer 
a = 10/3 
b = 10 \ 3 
c = 20/3 
d = 20 \ 3 

Debug.WriteLine("10/3 = " & 10/3 & ", assigned to integer = " & a) 
Debug.WriteLine("10 \ 3 = " & 10 \ 3 & ", assigned to integer = " & b) 
Debug.WriteLine("20/3 = " & 20/3 & ", assigned to integer = " & c) 
Debug.WriteLine("20 \ 3 = " & 20 \ 3 & ", assigned to integer = " & d)