소수를 분수로 바꾸기
소스의 처리한 이미지 입니다.
소스는 다음과 같습니다.
' 소수를 분수로 표시하기(소수 부분만 정수 부분은 그대로)
Option Explicit
Private Sub txtFloat_KeyDown(KeyCode As Integer, Shift As Integer)
If Not KeyCode = vbKeyReturn Then Exit Sub
If InStr(1, txtFloat.Text, ".") = 0 Then Exit Sub
Dim stringNumber As String ' 수치를 문자열로
Dim IntegerNumber As Long ' 정수부
Dim RealNumber As Long ' 실수부
Dim MultilerNumber As Long ' 실수부에 수에 대한 승수
stringNumber = txtFloat.Text
MultilerNumber = InStr(stringNumber, ".")
IntegerNumber = Val(Left(stringNumber, MultilerNumber - 1))
RealNumber = Val(Mid(stringNumber, MultilerNumber + 1))
MultilerNumber = 10 ^ Len(CStr(RealNumber))
While RealNumber Mod 5 = 0 And MultilerNumber Mod 5 = 0 ' 약분한다.
RealNumber = RealNumber / 5
MultilerNumber = MultilerNumber / 5
Wend
While RealNumber Mod 3 = 0 And MultilerNumber Mod 3 = 0
RealNumber = RealNumber / 3
MultilerNumber = MultilerNumber / 3
Wend
While RealNumber Mod 2 = 0 And MultilerNumber Mod 2 = 0
RealNumber = RealNumber / 2
MultilerNumber = MultilerNumber / 2
Wend
MsgBox IIf(IntegerNumber > 0, IntegerNumber & " ", "") & RealNumber & "/" & MultilerNumber
End Sub