컴퓨터 공부/엑셀 & VBA

[엑셀vba] 정수인지 소수(0.24, 0.1)인지 구분해보자

도 박사 2021. 1. 12. 22:28
반응형

간단한 방법으로 이 데이터가 소수인지 정수인지 구분해보도록 하자.

 

구글링을 잘못했는지 엑셀vba 소수를 검색하면 1,2,3,5,7,9,... 과 같은 1과 자기 자신 외에는 약수를 가지지 않는 수에 대해서만 나와있다. 내가 원한건 이게 아닌데...

 

엑셀vba에서 0.24, 0,123,  23.4234 이런 소수들을 구분하는 방법이 있는지 궁금해서 찾아봤지만, 해답은 찾을 수 없었다. 하지만 수학적 접근으로 비교적 쉽게 해결하였다.

 

 

소수 구분 식: x - 정수형 변환(x) = 소수점 아래 숫자

 

예시.

x 값이 123.24 라고 할 때 정수부분인 123을 x값에서 빼게 되면 0.24만 남게된다. 이 결과를 보면 나머지가 존재하기 때문에 소수라고 얘기 할 수 있다.

 

x = 4 일때

식: 4 - 정수형 변환(4) = 0

4를 정수형 변환하던 안하던 4이다. 4에서 4를 빼면 0이 된다. 그러므로 4는 정수이다.

 

x = 4.1 일때

식: 4.1 - 정수형 변환(4.1) = 0.1

4.1을 정수형으로 변환하면 4가 되고, 4.1 - 4 = 0.1이 된다. 그러므로 4.1은 소수이다.

 

 

위에서 나타난 식을 vba 함수로 나타내보았다.

 

Sub 소수구분()

    Dim x As Double
    
    x = 123.24
    
    If x - Int(x) = 0 Then
        Debug.Print x & " 은(는) 정수입니다."
    Else
        Debug.Print x & " 은(는) 소수다."
    End If
    
End Sub

 

 

한 단계씩 코드 실행


 

 

반응형