'功能:将两个数约分
'版本:V1.0
Dim a1, b1, a, b, i, p
a1 = InputBox("请输入第一个数字","比值化简工具(例:1080:2340)")
b1 = InputBox("请输入第二个数字","比值化简工具(例:1080:2340)")
If a1 > b1 Then max = a1 Else max = b1
If max <> 0 Then
a = a1: b = b1
For p = 1 To max
For i = 2 To max
If a Mod i = 0 And b Mod i = 0 Then a = a / i: b = b / i
Next
Next
MsgBox ("化简结果:" & a1 & ":" & b1 & " = " & a & ":" & b)
Else
MsgBox ("至少一个数不为0!")
End If
Function ratio(x, y) As String Dim r&, a, b, lx&, ly&, gcd& If InStr(x, ".") > 0 Then lx = Len(Split(x, ".")(1)) If InStr(y, ".") > 0 Then ly = Len(Split(y, ".")(1)) If lx < ly Then lx = ly a = x * 10 ^ lx b = y * 10 ^ lx r = a - Int(a / b) * b While r a = b b = r r = a - Int(a / b) * b Wend gcd = b ratio = x & ":" & y & "=" & (x * 10 ^ lx) / gcd & ":" & (y * 10 ^ lx) / gcd End Function
Sub test() a = 1234567.89 b = 12.3456 Debug.Print ratio(a, b) End Sub