注册 登录
编程论坛 VB6论坛

VB6怎么将比值化简?

yuma 发布于 2022-12-17 13:58, 1164 次点击
VB6怎么将比值化简?

例如:321.47582325:485.725  化简后是几比几啊?

[此贴子已经被作者于2022-12-17 13:59编辑过]

6 回复
#2
mrexcel2022-12-17 14:33
分子分母同乘10的幂去掉小数,再取最大公约数进行约分
#3
mrexcel2022-12-17 14:33
1285903293:1942900000
#4
yuma2022-12-17 16:05
'功能:将两个数约分
'版本: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


这个程序不能计算小数的比值,
#5
mrexcel2022-12-17 18:06
搜索辗转相除法
#6
mrexcel2022-12-17 18:26
程序代码:
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


1234567.89:12.3456=1028806575:10288
#7
yuma2022-12-18 08:30
3Q
1