VB中将小数化成分数

来源:百度知道 编辑:UC知道 时间:2024/05/07 17:16:40
谁能告诉我,对于一个小数位数不确定的小数而言,怎么将它化成分数,比如说一个变量为a,它是单精度型的,然后我要让它用分数显示的话,怎么实现?

分2步:
1、复制下面函数到模块中

Function fs(xs As Single) As String
Dim fz, fm, fz1, fm1, t, zs
Dim i As Integer

t = CStr(xs)
i = InStr(t, ".")
If i = 0 Then
fs = t
Exit Function
End If
zs = Val(Left(t, i - 1)) '整数部分
fm = Val("1" & String(Len(Mid(t, i + 1)), "0")) '分母
fz = zs * fm + Val(Mid(t, i + 1)) '分子

fz1 = fz: fm1 = fm

Do
If fz1 < fm1 Then fm1 = fm1 - fz1
If fz1 > fm1 Then fz1 = fz1 - fm1
Loop Until fz1 = fm1 '约分

fz = fz / fz1
fm = fm / fm1

fs = fz & "/" & fm '此处的FZ为约分后的分子,FM为分母
End Function
2、函数调用举例:
dim a as single
a=0.125
msgbox fs(a)

假设a=0.001
那么分数就是1/1000
依次类推(不是最简)
0.x小数变成分数:

Dim a as string
Dim i as single
i = 0.1345
Dim p() as string
Dim l as integer
a = cstr(i)
p = split(a,".")<