2016-09-29 2 views
1

나는 값의 숫자를 나누려고하고 값 중 하나가 0인지 아닌지 확인하는 가장 좋은 방법이 궁금 해서요. 보통 나는 그렇게이 일을 더 좋은, 더 똑똑한 방법이 있는지 궁금 값을 많이 확인해야좋은 방법 DivideByZero 예외를 피하기 위해

var somevar = (somevalue1 != 0 || somevalue2 != 0)?somevalue1/somevalue2:0; 

같은 것을 사용합니다.

+0

항상 방법을 만들 수 있습니다. 그런 다음 한 곳에서만 검사를 수행 할 수 있습니다. – PaulF

+0

'somevalue1'이 0인지 확인 할 필요가 없습니다. 0으로 무언가를 나누는 것은 물론 합법입니다. *를 * 0으로 나눌 수 없습니다. –

답변

4

0으로 나누는 것을 방지하기 위해 분모를 확인하면됩니다.

그래서

var somevar = somevalue2 != 0 ? somevalue1/somevalue2 : 0;

0 좋은 기본입니다 가정, 더 좋네요.

0

확인하지 않고 예외를 처리하지 않는 방법이 있습니다. 이것은 수학적으로 올바른 방법이 아니며 리소스를 소비하지만 정보를 위해서만 사용됩니다. 항상 float 값을 사용하고 나중에 정수로자를 수 있습니다.

"부동 소수점 유형은 IEEE 754를 기반으로하므로 무한대와 NaN (숫자가 아님)을 나타내는 규정이 있으므로 부동 소수점 산술 오버플로 또는 0으로 나누기는 예외를 발생시키지 않습니다."

따라서 DivideByZero가 예외없이 무한 상수를 사용하면 쉽게 확인할 수 있습니다. 더 읽기 쉬워야합니다.

// This will return "true". 
bool isIninity = Double.IsInfinity(3.0/0) ? "true" : "false"); 
+0

희망 하시겠습니까? "사실"및 "거짓"문자열을 제거하여 컴파일하도록 게시물을 편집했습니다. 나는 또한 큰 따옴표를 삭제할 수도있다. – KSib

관련 문제